R 如何在数据帧列表上执行循环函数,该函数需要来自数据帧列表的2个输入?

R 如何在数据帧列表上执行循环函数,该函数需要来自数据帧列表的2个输入?,r,list,function,loops,dataframe,R,List,Function,Loops,Dataframe,对于R编码的更高级部分,我仍然是相当新的,希望能帮助我制作循环 我有多个数据帧,我需要在每个帧上执行重复功能 Df1 <- data.frame(Col_1=c("A","B","C"), Col_2=c(1:3)) Df2 <- data.frame(Col_1=c("D","E","F"), Col_2=c(4:6)) Df3 <- data.frame(Col_1=c("G","H","I"), Col_2=c(7:9)) Df4 <- data.frame(Col

对于R编码的更高级部分,我仍然是相当新的,希望能帮助我制作循环

我有多个数据帧,我需要在每个帧上执行重复功能

Df1 <- data.frame(Col_1=c("A","B","C"), Col_2=c(1:3))
Df2 <- data.frame(Col_1=c("D","E","F"), Col_2=c(4:6))
Df3 <- data.frame(Col_1=c("G","H","I"), Col_2=c(7:9))
Df4 <- data.frame(Col_1=c("J","K","L"), Col_2=c(10:12))
DfList <- list(Df1,Df2,Df3,Df4)
该函数需要2个输入(列表中包含2个不同的数据帧:Dflist

example_function <- function(Dataframe_x,Dataframe_y){
  X_Sum_col_2 <- sum(Dataframe_x$Col_2)
  Y_Sum_col_2 <- sum(Dataframe_y$Col_2)
  ratio <- X_Sum_col_2/Y_Sum_col_2
}

>print(example_function(Df1,Df2))
0.4
无论何时尝试此操作,它都会告诉我尚未分配第二个变量(不确定如何分配):

非常感谢您对这个问题的任何帮助。
谢谢

我们可以使用嵌套的循环

res <- sapply(DfList, function(x) sapply(DfList, function(y) example_function(x, y)))
nm1 <- paste0("Df", 1:4)
dimnames(res) <- list(nm1, nm1)
round(res, 2)
#     Df1  Df2  Df3  Df4
#Df1 1.00 2.50 4.00 5.50
#Df2 0.40 1.00 1.60 2.20
#Df3 0.25 0.62 1.00 1.38
#Df4 0.18 0.45 0.73 1.00

res只需做一个嵌套的
sappy
sappy(DfList,函数(x)sappy(DfList,函数(y)示例_函数(x,y))
      Df1   Df2   Df3   Df4
Df1   1     2.5   4     5.5
Df2   0.40  1     1.6   2.2
Df3   0.25  0.63  1     1.38
Df4   0.18  0.45  0.73  1
>lapply(DfList,function(Dataframe_x,Dataframe_y){
  X_Sum_col_2 <- sum(Dataframe_x$Col_2)
  Y_Sum_col_2 <- sum(Dataframe_y$Col_2)
  ratio <- X_Sum_col_2/Y_Sum_col_2
    })
Error in FUN(X[[i]], ...) : 
  argument "Dataframe_y" is missing, with no default
>for(i in 1:4(DfList)){
  example_function(i,i)
}
Error: attempt to apply non-function
res <- sapply(DfList, function(x) sapply(DfList, function(y) example_function(x, y)))
nm1 <- paste0("Df", 1:4)
dimnames(res) <- list(nm1, nm1)
round(res, 2)
#     Df1  Df2  Df3  Df4
#Df1 1.00 2.50 4.00 5.50
#Df2 0.40 1.00 1.60 2.20
#Df3 0.25 0.62 1.00 1.38
#Df4 0.18 0.45 0.73 1.00