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的方法来做到这一点吗?

4

1 回答 1

3

一种选择是通过管道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"
于 2016-02-05T17:13:46.780 回答