【发布时间】:2021-01-23 14:10:58
【问题描述】:
从这个出色的answer 中,可以使用下面的magrittr 包在管道中过滤带有dplyr 的向量,如下所示:
library(dplyr)
c("D", "B", "C", "A", NA) %>%
.[matches("[^AB]", vars=.)]
#[1] "D" "C"
c("D", "B", "C", "A", NA) %>%
.[.!="A"]
# [1] "D" "B" "C" NA
但我想按矢量位置过滤,所以如果我想要前两个位置,我会得到:
#[1] "D" "B" #want to filter position <= 2
如果我想要第一和第四名,我会得到:
#[1] "D" "A" #want to filter position by c(1, 4)
等等……
实现这一目标的最佳方法是什么?
我认为使用 row_number 可能会起作用,但后来又想起这不起作用,因为顺序不正确:
row_number(c("D", "B", "C", "A", NA))
# [1] 4 2 3 1 NA
我最好使用seq_along:
seq_along(c("D", "B", "C", "A", NA))
# [1] 1 2 3 4 5
但我不确定如何将其合并到管道中。
有什么想法吗?
谢谢
【问题讨论】: