1

正如 Stackoverflow 中某处所建议的那样,为了存储许多数据帧,我将它们放在一个列表中。现在,我如何访问该列表中所有数据框的特定列(所有列都具有相同的名称)(以找到最大值)?

list[1:25]["colname"]

NULL

list[[1:25]]["colname"]

"Error in list[[1:25]] : recursive indexing failed at level 3",

虽然我可以得到一列

list[[1]]["colname"]

我也试过c(),但没有奏效。

我尝试了几次搜索,但找不到任何相关内容。我不是真正的程序员,只是需要它进行研究。我正在学习 R(使用 Rstudio)(我已经阅读了一些教程),所以我可能只是不知道要搜索的正确单词。

4

3 回答 3

1

sapply这是与 一起使用的一种可能方式[[

data <- list(data.frame(a = 1:3, b = 4:6), 
             data.frame(a = 10:15, b = 40:45))

sapply(data, "[[", "b")
[[1]]
[1] 4 5 6

[[2]]
[1] 40 41 42 43 44 45
于 2013-10-09T13:27:22.140 回答
1

如果 x 是您的列表,而 Sepal.Length 是您想要在列表中的所有数据集中取最大值的列:

x <- rep(list(iris),25)


max(unlist(lapply(x,function(df) max(df$Sepal.Length))))

如果您想要列表中每个数据集的最大值:

lapply(x,function(df) max(df$Sepal.Length))
于 2013-10-09T13:29:47.040 回答
0

apply家庭功能之一将起到作用。在这种情况下使用匿名函数data.frame对列表中的每个进行操作以查找max第一列的值...

#  Make some reproducible data
set.seed(1)
ll <- replicate( 3 , as.data.frame( matrix( sample( 9 ) , 3 ) ) , simplify = FALSE )
#[[1]]
#  V1 V2 V3
#1  1  4  3
#2  9  8  5
#3  7  2  6

#[[2]]
#  V1 V2 V3
#1  4  8  5
#2  7  2  3
#3  6  9  1

#[[3]]
#  V1 V2 V3
#1  6  4  2
#2  3  9  5
#3  1  7  8

#  Get max value of each of the first columns - could use a quoted column name here
lapply( ll , function(x) max( x[ , 1 ] ) )
#[[1]]
#[1] 9

#[[2]]
#[1] 7

#[[3]]
#[1] 6
于 2013-10-09T13:29:54.357 回答