2016-02-05 57 views
1

想象一下,我有矢量,我想刪除一個特定的元素。我可以做到以下幾點提取子集提取

library(magrittr) 

foo <- LETTERS[1:10] 

foo %>% 
{ 
    bar <- . 

    bar %>% 
    extract(bar %>% 
       equals("A") %>% 
       not) 
} 


[1] "B" "C" "D" "E" "F" "G" "H" "I" "J" 

但是,如果我想成爲更簡潔,這一點:

foo %>% 
    extract(. %>% 
      equals("A") %>% 
      not) 

不起作用:

Error in extract(., . %>% equals("A") %>% not) : 
    invalid subscript type 'closure' 

是不是有更多的地道的magrittr'的方式來做到這一點?

回答

1

一種選擇是將管foo到子集功能[,限制到做元件不等於A,使用!=

foo %>% "["(. != "A") 
# [1] "B" "C" "D" "E" "F" "G" "H" "I" "J" 

magrittr包已經混疊[extract,所以這是等效於:

foo %>% extract(. != "A") 
# [1] "B" "C" "D" "E" "F" "G" "H" "I" "J"