将多参数函数应用于 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
应用于列表中的每个数据框。但我需要能够指定列 f
和 g
应该用作输入。
到目前为止,我所有指定列的尝试都导致意外地从列表中指定了一个数据框。
有什么办法可以做到这一点吗?
谢谢。
我觉得你的 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
我有一个数据框列表,每个数据框有 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
应用于列表中的每个数据框。但我需要能够指定列 f
和 g
应该用作输入。
到目前为止,我所有指定列的尝试都导致意外地从列表中指定了一个数据框。
有什么办法可以做到这一点吗? 谢谢。
我觉得你的 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