【问题标题】:Accessing dynamically named tables using a new object in R [duplicate]使用 R 中的新对象访问动态命名的表 [重复]
【发布时间】:2014-10-20 14:49:08
【问题描述】:

我有一些按顺序标记的数据帧,即 frame_1 frame_2 等...我想以可能使用循环的顺序方式访问它们

对我来说有意义的一种方法是将我想要访问的数据框的名称分配给一个对象,然后将该对象传递给一个函数,即

varname<-paste("frame_",1,_sep="")

然后调用我的函数

function(varname)

但 R 似乎在字符串 varname 上调用函数,而不是在与 varname 同名的对象上调用函数。

有什么方法可以做我想做的事吗?

谢谢。

【问题讨论】:

  • mget(ls(pattern = "frame_\\d+")) 也许?
  • 为什么不将这些数据帧存储在列表中?
  • @SeñorO 我试过了,但额外的索引级别使其他任务变得更加困难。

标签: r


【解决方案1】:

我发现您可以使用 eval 和 parse 的组合将字符串解析为 R 命令,例如:

   function( eval( parse(text=paste0("name_",1))) )

在循环中:

for( i in 1:length(holder)){
  function(eval( parse(text=paste0("frame_",i))) )
}

【讨论】:

  • 刚刚在寻找类似问题的重复项时找到了这个问题/答案。 eval(parse()) 适用于此,但过于矫枉过正。 get() 更简单,但正如 Senor O 在 cmets 中所说,使用列表被认为是最佳实践。
猜你喜欢
  • 1970-01-01
  • 2019-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多