R中ifelsewhich%in%的用法
Posted rmliu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R中ifelsewhich%in%的用法相关的知识,希望对你有一定的参考价值。
-
中ifelse、which、%in%的用法 (2014-02-08 13:54:08)
-
标签: 教育
-
在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
以上是关于R中ifelsewhich%in%的用法的主要内容,如果未能解决你的问题,请参考以下文章