您没有足够仔细地阅读错误消息。在这里,我们的错误消息告诉您您没有选择任何列。您已经指定了行的条件......
> data[which(x>=2)]
Error in `[.data.frame`(data, which(x >= 2)) : undefined columns selected
由于您要返回所有列,只需在其中输入一个逗号(表示您希望返回所有列),您应该一切就绪。
> data[which(x>=2), ] # if x is in your workspace
x y
1 5 1
3 3 3
4 2 4
5 4 2
> ## with(data, data[x >= 2, ] # if x is not in your workspace
这里还有一点需要注意:你可以data.frame
直接这样:
data <- data.frame(x = c(5,1,3,2,4), y = c(1,5,3,4,2))
这就是我建议这样做的原因。首先,您的工作区中没有不必要的对象。其次,你不会被愚弄,以为某事在正常工作,而实际上它不是。您写道:“我知道我可以使用addresses <- which(x>=2)
”找到 x 值的地址。没错,但您可能没有意识到(因此这个问题)是您实际上并没有从您data.frame
的工作空间中访问“x”,而是访问“x”向量。