【问题标题】:R data frame select by global variableR数据框由全局变量选择
【发布时间】:2010-04-03 19:06:07
【问题描述】:

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

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

【问题讨论】:

    标签: r global-variables dataframe


    【解决方案1】:

    您可能会从阅读R 简介中受益,尤其是在矩阵、data.frames 和索引方面。您的 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() 中会为您提供索引。

    【讨论】:

      【解决方案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
      

      【讨论】:

      • “x”是一个例子,因为我正在与其他一些数据进行比较。您列出的第一部分是我不知道但需要的语法
      猜你喜欢
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 1970-01-01
      • 2011-04-08
      • 2012-06-09
      相关资源
      最近更新 更多