将多参数函数应用于 R 列表中的所有数据框

Apply a multi parameter function to all data frames in a list in R

我有一个数据框列表,每个数据框有 3 列。

list_of_df <- list(df1 = data.frame(f = c(6,4,2,9,7), g = c(7,5,3,1,8), h = c(4,2,1,3,6)),
                   df2 = data.frame(f = c(5,3,1,8), g = c(6,4,2,9), h = c(4,1,5,7)))
list_of_df
$df1
  f g h
1 6 7 4
2 4 5 2
3 2 3 1
4 9 1 3
5 7 8 6

$df2
  f g h
1 5 6 4
2 3 4 1
3 1 2 5
4 8 9 7

等等

我定义了一个函数来计算曲线下面积 (auc):

auc <- function(x,y) sum(diff(x) * (head(y,-1)+tail(y,-1)))/2

对于每个数据框,第 f 列是输入 x,第 g 列是输入 y

现在我想使用 apply() 的一个版本(不关心是哪个版本)将函数 auc 应用于列表中的每个数据框。但我需要能够指定列 fg 应该用作输入。

到目前为止,我所有指定列的尝试都导致意外地从列表中指定了一个数据框。

有什么办法可以做到这一点吗? 谢谢。

我觉得你的 AUC 函数不对,但 sapply 函数将列表作为输入。

auc <- function(x,y) sum(diff(x) * (head(y,-1)+tail(y,-1)))/2

list_of_df <- list(df1 = data.frame(f = c(6,4,2,9,7), g = c(7,5,3,1,8), h = c(4,2,1,3,6)),
                   df2 = data.frame(f = c(5,3,1,8), g = c(6,4,2,9), h = c(4,1,5,7)))
list_of_df
$df1
  f g h
1 6 7 4
2 4 5 2
3 2 3 1
4 9 1 3
5 7 8 6

$df2
  f g h
1 5 6 4
2 3 4 1
3 1 2 5
4 8 9 7

sapply(list_of_df, function(x) auc(x$f, x$g))
  df1   df2 
-15.0  22.5