2

我有 3 个数据框,分别称为“第一”、“第二”和“第三”

我还有一个字符串向量,里面有他们的名字

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

我想遍历向量并参考数据框

for (i in frames) {

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

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

4

2 回答 2

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
于 2012-10-15T14:27:47.273 回答
2

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

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

但是,您正在处理 的副本firstsecond并且thirdframes.

于 2012-10-15T15:04:20.703 回答