R|ifelse、which、%in%的用法

转载自蓝迪的博客:R中ifelse、which、%in%的用法

在R学习过程中,遇到了ifelse、which、%in%,下面分别举例,说明他们的用法。

1、ifelse

ifelse(test, yes, no)
test为真,输出yes值,否则输出no值。
举例如下:

> x <- c(1,1,1,0,0,1,1)
> ifelse(x != 1, 1, 0) #若果x的值不等于1,输出1,否则输出0
[1] 0 0 0 1 1 0 0

2、which

用法 which(test)。
返回test为真值的位置(指针)。
举例如下:

> which(x!=1) #返回x中不等于1的变量值得位置
[1] 4 5

> which(c(T,F,T)) #返回c(T,F,T)中为TURE值的位置。
[1] 1 3

> which(c(1,0,1)) #只对T, F做判断。
Error in which(c(1, 0, 1)) : argument to 'which' is not logical

3、%in%

用法 a %in% table
a值是否包含于table中,为真输出TURE,否者输出FALSE
例如:

> x %in% 1
[1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE

> x %in% c(1, 0)
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE

> x %in% c(1, 2)
[1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE

联合使用

> ifelse(x %in% 1, 1, 0) #若x的值包含在1里面,输出1,否者输出0
[1] 1 1 1 0 0 1 1

> ifelse(x %in% 1, 'yes', 'no') #若x的值包含在1里面,输出yes,否者输出no
[1] "yes" "yes" "yes" "no"  "no"  "yes" "yes"

> which(x %in% 1) 输出x包含在1中值的位置
[1] 1 2 3 6 7

> y <- c(2, 1, 3, 4)
> z <- c(1, 4)
> ifelse(y %in% z, which(y==z), 0 ) ##若y的值包含在z里面,输出y==z的位置,否者输出0
[1] 0 2 0 4

> ifelse(y %in% z, which(y==z), 0 ) 
# 若y的值包含在z里面,输出y==z的位置,否者输出0
# 此例中没有找到y==z的值, 输出为NA。
[1] NA  0  0 NA

> ifelse(y %in% z, 1, 0 )
[1] 1 0 0 1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 14,183评论 2 33
  • 我就是在这个心里难受身边有一群问我怎么了怎么了的朋友但是我一句话也说不出只是想哭的晚上,想到了这个软件,想到了...
    9aadf0bbd497阅读 1,371评论 0 0
  • 文/温台 多少次 我的梦里 有一个你 多少次 你的温柔 缱绻不已 可我看不清你 你的动作 你的口气 你的神情 我都...
    温台阅读 1,176评论 6 3
  • 漂亮拖鞋阅读 3,122评论 2 8