我有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
}
这不起作用,我错过了什么?
答案 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
内处理second
,third
和frames
的副本。