R数据帧由全局变量选择

时间:2010-04-03 19:06:07

标签: r global-variables dataframe

我不确定如何在不收到错误的情况下执行此操作。这是我的问题的简化示例。

说我有这个数据框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中做我想做的事?

2 个答案:

答案 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