使用管道和点子集数据框列
Subset data frame column using pipe and dot
我想学习如何正确使用“.”当使用 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)
时,出现 "undefined columns selected" 错误。如何 select 数据框中的一列用点引用?
我们可以将其保存在 {}
中,即
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[.,]
dplyr 方法:
myDataFrame %>%
filter_at(vars(1), any_vars(. != 3))
如果您只给 [.data.frame
一个参数,它将用于子集列。
您只能添加一个字符并使您的表格有效:
myDataFrame %>% "[" (.[,1] != 3,)
我想学习如何正确使用“.”当使用 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)
时,出现 "undefined columns selected" 错误。如何 select 数据框中的一列用点引用?
我们可以将其保存在 {}
中,即
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[.,]
dplyr 方法:
myDataFrame %>%
filter_at(vars(1), any_vars(. != 3))
如果您只给 [.data.frame
一个参数,它将用于子集列。
您只能添加一个字符并使您的表格有效:
myDataFrame %>% "[" (.[,1] != 3,)