我不确定如何在不收到错误的情况下执行此操作。这是我的问题的简化示例。
说我有这个数据框DF
a b c d
1 2 3 4
2 3 4 5
3 4 5 6
然后我有一个变量
x <- min(c(1,2,3))
现在我想做以下事情
y <- DF[a == x]
但是当我尝试引用一些像“x”这样的变量时,我得到一个错误,因为R在我的数据框中寻找一列“x”。我收到“未定义列选择”错误
我怎样才能在R中做我想做的事?
答案 0 :(得分:4)
您可以从阅读 R 简介中受益,尤其是在矩阵,数据框架和索引方面。您的a
是data.frame的列,您的x
是标量。你在那里的比较是行不通的。
也许你的意思
R> DF$a == min(c(1,2,3))
[1] TRUE FALSE FALSE
R> DF[,"a"] == min(c(1,2,3))
[1] TRUE FALSE FALSE
R>
告诉你第一行适合但不适合另一行。在which()
中包含此内容会为您提供索引。
答案 1 :(得分:2)
我认为这就是你要找的东西:
> x <- min(DF$a)
> DF[DF$a == x,]
a b c d
1 1 2 3 4
更简单的方法(避免'x'变量)就是:
> DF[which.min(DF$a),]
a b c d
1 1 2 3 4
或者这个:
> subset(DF, a==min(a))
a b c d
1 1 2 3 4