【发布时间】:2015-10-24 20:56:59
【问题描述】:
如果我重复了一个问题,我很抱歉,但我是新手,我找不到答案(可能是因为我缺乏行话)。
我生成了一个这样的数据框:
x1 <- c(1,2,3,4,5)
x2 <- c("a", "b", "c", "d", "e")
df <- data.frame(x1,x2)
x1 x2
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
然后我尝试像这样对第一列进行子集调节
df[df$x1>3, "x2"]
结果符合预期
[1] d e
但是当我尝试时
df["x1" >3, "x2"]
[1] a b c d e
R 似乎忽略了条件语句并返回整列 x2。有没有一种方法可以使用列名来评估条件语句(、==)?
编辑:我想我部分找到了答案:R 评估
"some text" > 1000
[1] TRUE
这就解释了为什么我得到所有行。
问题仍然存在:使用列名评估条件语句的好方法是什么?
【问题讨论】:
-
是的,
df[df[["x1"]] > 3, "x2"]。表达式"x1" > 3的计算结果为TRUE,因此在第二次尝试中,您正在执行df[TRUE, "x2"],这解释了结果 -
非常感谢。做到了。
标签: r conditional subset