【问题标题】:Getting a specific value of data.table using a variable in R使用 R 中的变量获取 data.table 的特定值
【发布时间】:2019-02-01 19:54:55
【问题描述】:

我想给我们一个 data.table 的特定值。列名和列数总是在变化,所以我不能使用:

df$column_5[2]

或者:

df[2,5]

为了获得我需要的价值。

我想做类似以下的事情:

x <- 5
df[2,x]

但我收到一条错误消息:

df[2,x] [.data.table(df, 2, x) 中的错误: j([...] 内的第二个参数)是单个符号,但未找到列名“x”。也许您打算使用 DT[, ..x]。与 data.frame 的这种差异是经过深思熟虑的,并在 FAQ 1.1 中进行了解释。”

你有解决这个问题的办法吗?

【问题讨论】:

  • 您使用的是data.table(即不是数据框)!你想要一个 data.table 操作还是一个 dataframe 操作?
  • 试试df[2, x, with = FALSE]
  • @jogo 很抱歉使用了不正确的词。你对我的问题有解决方案吗?继续我的,我对 R 还是比较陌生。
  • @Mako212 谢谢!这正是我所需要的!
  • 当您使用data.table 库时,它会改变括号对data.table 类对象的行为方式。如果你想利用 R 的标准 data.frame 评估括号,你需要指定 with = F

标签: r data.table


【解决方案1】:

根据@jogo 的评论,您使用的是data.table

解决方法在错误中:

也许您打算使用 DT[, ..x]

df[2, ..x] 应该可以解决问题。

【讨论】:

  • 谢谢!这和@Mako212 的解决方案对我有用。
  • 就像我在上面的评论中所说的那样,由于我对 R 还比较陌生,所以我不是最擅长找出错误消息的人。一旦我看到你的解决方案,我就抓住了它。
  • 没问题,每个人都从某个地方开始。 data.table 对象扩展 data.frame,所以你的困惑不是没有道理的。也就是说,它们在一些重要方面有所不同。如果你有时间this faq 可能值得一读!
  • 我猜这会返回一个子表。如果需要该值,可以使用 DT[[x]][2],它也适用于数据帧。
  • 感谢您的链接。我一定会花时间来解决这个问题!
猜你喜欢
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
相关资源
最近更新 更多