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

  1. 中ifelse、which、%in%的用法 (2014-02-08 13:54:08)
  2.  
    标签: 教育
  3.  
    在R学习过程中,遇到了ifelse、which、%in%,下面分别举例,说明他们的用法。
  4.  
    1、ifelse
  5.  
    ifelse(test, yes, no)
  6.  
    test为真,输出yes值,否则输出no值。
  7.  
    举例如下:
  8.  
    > x <- c(1,1,1,0,0,1,1)
  9.  
    > ifelse(x != 1, 1, 0) #若果x的值不等于1,输出1,否则输出0
  10.  
    [1] 0 0 0 1 1 0 0
  11.  
     
  12.  
    2、which
  13.  
    用法which(test)。
  14.  
    返回test为真值的位置(指针)。
  15.  
    举例如下:
  16.  
    > which(x!=1) #返回x中不等于1的变量值得位置
  17.  
    [1] 4 5
  18.  
    > which(c(T,F,T)) #返回c(T,F,T)中为TURE值的位置。
  19.  
    [1] 1 3
  20.  
    > which(c(1,0,1)) #只对T, F做判断。
  21.  
    Error in which(c(1, 0, 1)) : argument to 'which' is not logical
  22.  
     
  23.  
    3、%in%
  24.  
    用法 a %in% table
  25.  
    a值是否包含于table中,为真输出TURE,否者输出FALSE
  26.  
    例如
  27.  
    > x %in% 1
  28.  
    [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
  29.  
    > x %in% c(1, 0)
  30.  
    [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  31.  
    > x %in% c(1, 2)
  32.  
    [1]  TRUE  TRUE  TRUE FALSE FALSE  TRUE  TRUE
  33.  
     
  34.  
     
  35.  
    联合使用
  36.  
    > ifelse(x %in% 1, 1, 0) #若x的值包含在1里面,输出1,否者输出0
  37.  
    [1] 1 1 1 0 0 1 1
  38.  
    > ifelse(x %in% 1, 'yes', 'no') #若x的值包含在1里面,输出yes,否者输出no
  39.  
    [1] "yes" "yes" "yes" "no"  "no"  "yes" "yes"
  40.  
    > which(x %in% 1) 输出x包含在1中值的位置
  41.  
    [1] 1 2 3 6 7
  42.  
    > y <- c(2, 1, 3, 4)
  43.  
    > z <- c(1, 4)
  44.  
    > ifelse(y %in% z, which(y==z), 0 ) ##若y的值包含在z里面,输出y==z的位置,否者输出0
  45.  
    [1] 0 2 0 4
  46.  
    > ifelse(y %in% z, which(y==z), 0 ) ##若y的值包含在z里面,输出y==z的位置,否者输出0,
  47.  
                                         #此例中没有找到y==z的值, 输出为NA。
  48.  
    [1] NA  0  0 NA
  49.  
    > ifelse(y %in% z, 1, 0 )
  50.  
    [1] 1 0 0 1

猜你喜欢

转载自www.cnblogs.com/rmliu/p/10921252.html