如何使用字符串来引用R中的数据帧?

时间:2012-10-15 14:16:48

标签: r

我有3个数据框,分别叫做'first','second'和'third'

我还有一个带有名字的字符串向量

 frames <- c("first","second","third")

我想循环遍历向量并引用数据框

for (i in frames) {

  #set first value be 0 in each data frame
  i[1,1] <- 0
}

这不起作用,我错过了什么?

2 个答案:

答案 0 :(得分:3)

这实际上不是最佳方法,但这是使您的具体示例有效的一种方法。

first <- data.frame(x = 1:5)
second <- data.frame(x = 1:5)
third <- data.frame(x = 1:5)

frames <- c("first","second","third")

for (i in frames) {
 df <- get(i)
 df[1,1] <- 45
 assign(as.character(i), df, envir= .GlobalEnv)
}


> first
   x
1 45
2  2
3  3
4  4
5  5
> second
   x
1 45
2  2
3  3
4  4
5  5
> third
   x
1 45
2  2
3  3
4  4
5  5

答案 1 :(得分:2)

正如贾斯汀所说,R方式是使用一个列表。因此,只要您将数据框名称作为字符串,就可以将它们复制到列表中。

frames <- lapply(c("first", "second", "third"), get)
(frames <- lapply(frames, function(x) {x[1,1] <- 0; x}))

但是,您正在first内处理secondthirdframes的副本。