在R中使用for循环遍历多个数据框

3
我有四个数据框A、B、C、D。我想迭代这四个数据框,使得每一个都作为第四个参数传递给自定义函数testdf(),该参数只能接受数据框类型。
for (a in 1: (A,B,C,D)){
  a<-testdf(x,y,z,A)
}

我还尝试使用列表,但似乎并没有起作用,即使在函数中传递 as.data.frame(mylist(A)) 也会出错,提示不能传递列表。


它无法工作是因为您的代码中有三个 a,每个都扮演不同的角色。请使用其他名称。 - Rui Barradas
result <- lapply(list(A,B,C,D), function(DF) { func(a, b, c, DF) }) - Rui Barradas
1个回答

2

从您编写的代码中看来,似乎存在变量混淆的情况。我下面的示例应该可以解决这个问题。

像您之前尝试过的那样使用列表可能是一个不错的选择。


A <- as.data.frame(0,matrix(0, nrow = 4, ncols = 6)
B <- as.data.frame(0,matrix(0, nrow = 5, ncols = 6)
C <- as.data.frame(0,matrix(0, nrow = 4, ncols = 4)
D <- as.data.frame(0,matrix(0, nrow = 3, ncols = 5)

list.dfs <- list(A,B,C,D)

for (i in 1:length(list.dfs)){

#Since I don't know your function I just catenated the letters with
#whatever is in your data frames
  result <- cat("a","b","c",i)

}


最初的回答
如果这有所帮助,或者您需要澄清,请告诉我!

1
不写重复的步骤是编写for循环的主要目的。A、B、C、D已经是数据框。 - Quest
我想要与第四个参数传递的数据框名称相同。 - Quest
抱歉,我在解释时应该更清楚。我认为通过添加数据框创建使我的答案变得复杂了。那些只是代表您的数据框。按照我编写的方式,这个for循环应该按照您想要的方式迭代地将每个数据框传递到第四个位置。 - Jeffrey Brabec
哦,好的,明白了,但我希望'result'的名称与df名称相同。 - Quest
明白了。您可以尝试将“result”设置为一个列表,其中包含每个数据框从函数中得出的结果。result <- list()循环运行后,您可能只需要使用names(result) <- c("A", "B", "C", "D")更改列表的每个成员的名称。 - Jeffrey Brabec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接