我有 3 个数据框,分别称为“第一”、“第二”和“第三”
我还有一个字符串向量,里面有他们的名字
frames <- c("first","second","third")
我想遍历向量并参考数据框
for (i in frames) {
#set first value be 0 in each data frame
i[1,1] <- 0
}
这不起作用,我错过了什么?
我有 3 个数据框,分别称为“第一”、“第二”和“第三”
我还有一个字符串向量,里面有他们的名字
frames <- c("first","second","third")
我想遍历向量并参考数据框
for (i in frames) {
#set first value be 0 in each data frame
i[1,1] <- 0
}
这不起作用,我错过了什么?
这确实不是执行此操作的最佳方法,但这是使您的特定示例工作的一种方法。
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
正如贾斯汀所说,R 方式是使用列表。因此,假设您只有数据框名称作为字符串,您可以将它们复制到列表中。
frames <- lapply(c("first", "second", "third"), get)
(frames <- lapply(frames, function(x) {x[1,1] <- 0; x}))
但是,您正在处理 的副本first
,second
并且third
在frames
.