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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章