我想学习如何正确使用“。”当用magrittr进行子集化时。
给定数据框myDataframe
,
myDataFrame <- data.frame(c(1,2,3,3,3,4,5), c(10,11,12,13,14,15,16))
# c.1..2..3..3..3..4..5. c.10..11..12..13..14..15..16.
#1 1 10
#2 2 11
#3 3 12
#4 3 13
#5 3 14
#6 4 15
#7 5 16
我想删除第一列中包含3的所有行,我可以使用myDataFrame[ myDataFrame[,1] != 3 ,]
来获取此结果:
# c.1..2..3..3..3..4..5. c.10..11..12..13..14..15..16.
#1 1 10
#2 2 11
#6 4 15
#7 5 16
但是,我需要使用管道(我无法命名数据帧的列)。
当我尝试运行myDataFrame %>% "[" (.[,1] != 3)
时,我收到“未定义列选择”错误。如何在用点引用的数据框中选择一列?
答案 0 :(得分:2)
dplyr方法:
myDataFrame %>%
filter_at(vars(1), any_vars(. != 3))
答案 1 :(得分:1)
我们可以将它保存在{}
即
myDataFrame %>%
{.[.[[1]] != 3,]}
# c.1..2..3..3..3..4..5. c.10..11..12..13..14..15..16.
#1 1 10
#2 2 11
#6 4 15
#7 5 16
或以扩展形式
myDataFrame %>%
{`[`(.[,1]) != 3} %>%
myDataFrame[.,]
答案 2 :(得分:1)
如果只为[.data.frame
提供一个参数,它将用于子集列。
您只能添加一个字符并使表单正常工作:
myDataFrame %>% "[" (.[,1] != 3,)