【问题标题】:Dynamically assign elements to object将元素动态分配给对象
【发布时间】:2017-01-18 14:23:24
【问题描述】:

在 R 中,我试图动态选择名为 DF 的 data.frame 的列。如果

 cutOffYear=2014 

forecast_years=3

那么这段代码

paste0("DF$X",cutOffYear+1:forecast_years)

产量:

[1] "DF$X2015" "DF$X2016" "DF$X2017"

假设 DF 中存在所有三列,我如何将列变量分配给字符?

我尝试了很多 get、assign 和 paste0 的组合,但都失败了。

【问题讨论】:

  • 不要使用$,使用[[[

标签: r dataframe get paste assign


【解决方案1】:

我们可以尝试使用[ 来选择列。使用$ 时通常容易出错。如果我们需要将输出作为data.frame 并在pasted 'cutOffYear'、'forecast_years' 组合中指定的列,那么下面的代码应该可以正常工作

DF[paste0("X", cutOffYear+1:forecast_years)]

【讨论】:

  • @joel.wilson 我不确定这里的意图是什么,只是选择列还是做一些操作?如果是data.table,则[[只能选择一列(因为这是[[的行为,否则,您必须添加with = FALSE进行子集
  • 同意! @akrun
  • 谢谢@akrun。这解决了它,而且它更加高效和整洁。
猜你喜欢
  • 2019-02-24
  • 2017-03-22
  • 2012-10-18
  • 2015-08-20
  • 2012-03-29
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多