首页 > 解决方案 > 如何使用字符变量来引用 R 中的 data.frame?

问题描述

我有一个动态数量的 data.frames,具体取决于输入 - n_tables。

n_tables = 5 ## This may vary between 3 to 12
for(i in 1:n_tables){
    assign(paste0("r", i),data.frame(X = c("a","b","c"),Y = runif(3,0,10)))
}

现在,我需要将所有这些 data.frames 放在一个列表中并将它们子集化。我已经尝试了下面的代码,但没有工作 -

t <- paste0("r",1:n_tables)
p <-lapply(t,function(x){(x[x$X == "a",])})

先感谢您。

标签: rdataframe

解决方案


您可以使用get()来获取对象,即

p <-lapply(t,function(x){x <- get(x);x[x$X == "a",]})

这样

> p
[[1]]
  X        Y
1 a 5.550481

[[2]]
  X        Y
1 a 5.365116

[[3]]
  X        Y
1 a 5.783017

[[4]]
  X        Y
1 a 2.782952

[[5]]
  X        Y
1 a 2.123357

推荐阅读