R语言中ifelse、which、%in%的用法详解
ifelse、which、%in%是R语言里极其重要的函数,以后会经常在别的程序中看到。
ifelse
ifelse是if条件判断语句的简写,它的用法如下:
ifelse(test,yes,no)
参数 | 描述 |
---|---|
test | 一个可以判断逻辑表达式 |
yes | 判断为 true 后返回的对象 |
no | 判断为 flase 后返回的对象 |
举例:
x = 5 ifelse(x,1,0)
如果x不等于0,就返回1,等于0就返回0。
which
which 返回条件为真的句柄,给正确的逻辑对象返回一个它的索引。
which(test,arr.ind=FALSE)
test 必须是逻辑对象,逻辑数组。
举例:
which(LETTERS == "R")
%in%
%in% 判断 前面的对象是否在后面的容器中
element %in% list veator
1 %in% c(1:3)
补充:R语言:if-else条件判断及any、all、na.omit使用方法
基本结构展示:
if (7<10) { print("Seven is less than ten") } else{ print("seven is more than ten") }
实例演示:
Titanic=read.csv("https://goo.gl/4Gqsnz") #从网络读取数据
1. any()
#any代表只要有任一值符合,即为TRUE if (any(titanicC$Age>70)) { print("there are passengers older than 70") } else{ print("no one is older than 70") }
2. all()
#所有都满足才true if (all(titanicC$Age>10)) { print("all passengers older than 10") } else{ print("there are passengers younger than 10") }
3. na.omit()
#放的位置决定是删除单一变量缺失值,还是删除任何变量缺失值 if (any(na.omit(titanic$Age==100))) { print("there are passengers aged 100") } else{ print("there are no passengers aged 100") } #数据库中只要有missing的记录都删掉 if (any(titanic$Age==80, na.rm=TRUE)) { print("there are passengers aged 80") } else{ print("there are no passengers aged 80") } #Age这个变量有missing的记录删掉,其他变量有missing可以保留
4. else if 写更重复的语句
x=100 y=10 if(x<y){ print("AA") } else if(x==y){ print(BB) } else{ print(CC) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
R语言-使用ifelse进行数据分组
数据分组,根据数据分析对象的特征,按照一定的数值指标,把数据分析对象划分为不同的区间部分来研究,以揭示内在的联系和规律性: 在R中,我们常用ifelse函数来进行数据的分组,跟excel中的if函数是同一种用法. ifelse(condition,TRUE,FALSE) > data <- read.table('1.csv', sep='|', header=TRUE); > > level <- ifelse( + data$cost<=20, "(0,2
-
R语言 实现选取某一行的最大值
可以先自定义函数 也可以用的时候再定义. > mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3) > mat [,1] [,2] [,3] [1,] 1 2 3 [2,] 7 8 9 [3,] 4 5 6 > apply(mat, 2, function(x){order(x, decreasing=T)[1]}) # 查找每一列 [1] 2 2 2 > apply(mat, 1, function(x){order(x, dec
-
R语言中na.fail和na.omit的用法
实际工作中,数据集很少是完整的,许多情况下样本中都会包括若干缺失值NA,这在进行数据分析和挖掘时比较麻烦. R语言通过na.fail和na.omit可以很好地处理样本中的缺失值 1.na.fail(<向量a>): 如果向量a内包括至少1个NA,则返回错误:如果不包括任何NA,则返回原有向量a 2.na.omit(<向量a>): 返回删除NA后的向量a 3.attr( na.omit(<向量a>) ,"na.action"): 返回向量a中元素为NA的
-
R语言ARMA模型的参数选择说明
AR(p)模型与MA(q)实际上是ARMA(p,q)模型的特例.它们都统称为ARMA模型,而ARMA(p,q)模型的统计性质也是AR(p)与MA(q)模型的统计性质的有机组合. 平稳系列建模 假如某个观察值序列通过序列预处理可以判定为平稳非白噪声序列,就可以利用ARMA模型对序列建模. 1.求出该观察值序列的样本自相关系数(ACF)与偏相关系数(PACF的值. 2.根据根样本自相关系数和偏自相关系数的性质,选择阶数适当的ARMA(p,q)模型进行拟合. 3.估计模型中未知参数的值 4.检验模型的
-
R语言中if(){}else{}语句和ifelse()函数的区别详解
首先看看定义: # if statement if(cond) expr if(cond) cons.expr else alt.expr # ifelse function ifelse(test, yes, no) 这两个函数(R语言中都是函数)相同的地方都是根据条件返回对应的值. 区别在于: if语句的条件是个TRUE/FALSE值,如果是个长度>1的逻辑向量,只判断第一个TRUE/FALSE值:而ifelse是长度任意的逻辑向量,返回根据逻辑向量对应对的yes/no值组合的新向量 ife
-
解决R语言中install_github中无法安装遇到的问题
首先,让我们来进入常规步骤 我安装的是recharts包,正常的写法呢,就是以下这个样子: install.packages("devtools") #devtools::install_github("madlogos/recharts") 第一个问题: 然而对于今天的我来说,那就太天真了,首先踏入的第一个坑: 无法打开URL'http://yihui.name/xran/src/contrib/PACKAGES' Warning in install.packa
-
R语言实现用cbind合并两列数据
我有两个数据文件,分别只有一列,这两列数据行数一行,我想把这两列合并到一个数据文件中,方便使用. 我的两个数据文件分别是1.txt,2.txt,保存后的文件名是3.txt. // 代码如下 gow1<-read.table("1.txt",header = FALSE) gow2<-read.table("2.txt",header = FALSE) View(gow1) View(gow2) gow<-cbind(gow1,gow2) View(
-
R语言-生成频数表和列联表crosstable函数介绍
列联表crosstable 列联表不仅可以用来做简单的描述性统计,还可以在机器学习中用来比较识别正确率,FPR,TPR等等数据,以便我们比较不同的ML模型 or 调参. 2x2列联表一般长下面这样: Total Observations in Table: 143 | test_cancer$diagnosis lda.class | 0 | 1 | Row Total | -------------|-----------|-----------|-----------| 0 | 82 | 1
-
C语言中的const和free用法详解
注意:C语言中的const和C++中的const是有区别的,而且在使用VS编译测试的时候.如果是C的话,请一定要建立一个后缀为C的文件,不要是CPP的文件.因为,两个编译器会有差别的. 一.C语言中的const比较常见的用法,const做常量 #include<stdio.h> #include<malloc.h> #include<string.h> /* C中的const用法(使用VS测试的时候,要注意建立一个C后缀的文件,因为C的编译器和C++的编译器还是有区别的
-
R语言中set.seed()函数的作用详解
目录 001.首先查看不使用set.seed函数的情况 002.使用set.seed函数的情况 003.改变种子序号的情况 R语言中set.seed()函数的作用是保证前后生成的随机数保持一致. 001.首先查看不使用set.seed函数的情况 x=rnorm(10) ## 生成10个平均值为0, 标准差为1的符合正太分布的随机数 x plot(x) 再次运行以上代码(可以发现生成的随机数发生了编号): x=rnorm(10) x plot(x) 002.使用set.seed函数的情况 set.
-
在C#和Java语言中for和foreach的区别详解
for循环和foreach循环的区别 首先在这里声明一点,C#和Java这两种语言很相似,尤其是初学的数据类型那一部分,所以这里写的for和foreach的区别在C#和Java中都适用. 我会在下面分别列出两种语言的for和foreach分别循环打印一个数组,大家可以看看区别 话不多说,直接上代码: //c# //先创建一个数组 int[] arr = new int[3] {99, 11, 22}; //利用for循环打印(可以创建一个变量 i;判断这个i是否小于数组的长度;每次循环i自增1)
-
Java 语言中Object 类和System 类详解
Object是java所有类的基类,是整个类继承结构的顶端,也是最抽象的一个类.大家天天都在使用toString().equals().hashCode().waite().notify().getClass()等方法,或许都没有意识到是Object的方法,也没有去看Object还有哪些方法以及思考为什么这些方法要放到Object中. 一.Java Object类简介-所有类的超类 Object 是 Java 类库中的一个特殊类,也是所有类的父类.也就是说,J ava 允许把任何类型的对象赋给
-
R语言中ifelse、which、%in%的用法详解
ifelse.which.%in%是R语言里极其重要的函数,以后会经常在别的程序中看到. ifelse ifelse是if条件判断语句的简写,它的用法如下: ifelse(test,yes,no) 参数 描述 test 一个可以判断逻辑表达式 yes 判断为 true 后返回的对象 no 判断为 flase 后返回的对象 举例: x = 5 ifelse(x,1,0) 如果x不等于0,就返回1,等于0就返回0. which which 返回条件为真的句柄,给正确的逻辑对象返回一个它的索引. wh
-
C语言中printf()缓冲问题详解
前言 缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算机的运行速度. 又比如,
-
C语言中static的使用方法实例详解
目录 前言 一.static修饰变量 1.修饰局部变量 2.修饰全局变量 二.static修饰函数 补充:static的好处是什么? 总结 前言 static关键字不仅可以用来修饰变量,还可以用来修饰函数.在使用static关键字修饰变量时,我们称此变量为静态变量.静态变量的存储方式与全局变量一样,都是静态存储方式.静态变量属于静态存储方式,属于静态存储方式的变量却不一定就是静态变量. 一.static修饰变量 1.修饰局部变量 先看段代码: #include <stdio.h> void t
-
C语言中sizeof()与strlen()的区别详解
前言 sizeof()和strlen()经常会被初学者混淆,但其中有有很大区别: sizeof() 1. sizeof()[操作数所占空间的字节数大小]是一种c中的基本运算符. 可以以类型.指针.数组和函数等作为参数. 头文件类型为unsigned int. 运算值在编译的时候就出结果,所以可以用来定义数组维数. char a[5]="123"; int b=sizeof(a);//b=5 int c=strlen(a);//c=3 sizeof()是一种单目操作符,是用来计算你所使用
-
golang语言中wasm 环境搭建的过程详解
golang 安装 通过官方地址 下载.MacOS 也可通过 brew 快速安装: $ brew install golang $ go version go version go1.17.2 darwin/arm64 golang 环境测试 新建文件 main.go ,写入: package main import "fmt" func main() { fmt.Println("Hello World!") } 执行 go run main.go ,将输出: $
-
Go语言中io包核心接口示例详解
目录 前言 Reader Writer Closer Seeker 组合接口 总结 前言 IO 操作是我们在编程中不可避免会遇到的,例如读写文件,Go语言的 io 包中提供了相关的接口,定义了相应的规范,不同的数据类型可以根据规范去实现相应的方法,提供更加丰富的功能. Go 语言提倡小接口 + 接口组合的方式,来扩展程序的行为以及增加程序的灵活性.io代码包恰恰就可以作为这样的一个标杆,它可以成为我们运用这种技巧时的一个参考标准.io包中包含了大量接口,本篇文章我们就先来学习四个核心接口以及对应
随机推荐
- php微信浏览器分享设置以及回调详解
- docker中搭建overlay 网络实验环境
- Linux 中的 Openssl命令及实例代码
- 微信JS接口汇总及使用详解
- JS 仿腾讯发表微博的效果代码
- WordPress中鼠标悬停显示和隐藏评论及引用按钮的实现
- c# xml API操作的小例子
- 详解MySQL中的分组查询与连接查询语句
- mysql函数split功能实现
- Express之get,pos请求参数的获取
- php给每个段落添加空格的方法
- jQuery插件jRumble实现网页元素抖动
- WINDOWS 2003 安全设置(伪装篇)
- 设置Android设备WIFI在休眠时永不断开的代码实现
- Android自定义View实现箭头沿圆转动实例代码
- java.lang.Void 与 void的比较及使用方法介绍
- 杂谈try-catch-finally异常处理
- Code: write(s,d) 输出连续字符串
- PHP 开发者该知道的 5 个 Composer 小技巧
- 详解Vue.js中.native修饰符