使用数据帧列表中数据帧的相应元素应用函数(例如均值)
Apply a function (e.g. mean) using corresponding elements of dataframes in list of dataframes
我有一个包含 10 个数据框的列表,其中每个元素代表一个不同的变量。
l1 <- list(d1=data.frame(a=c(1,2,3), b=c(4,5,6)),
d2=data.frame(a=c(3,2,1), b=c(6,5,4)),
d3=data.frame(a=c(2,2,2), b=c(5,5,5)))
我想对所有数据帧的每个对应元素取平均值。
因此,对于元素 [1,1],我的平均值为 (1,3,2)。
我可以为一个职位做到这一点:
m1_1<-mean(unlist(lapply(l1, function(x) (x[[1,1]]))))
有没有办法在整个数据帧上扩展索引?
谢谢,
M.
我们可以用Reduce
得到对应元素的和(+
),然后除以list
的length
Reduce(`+`, l1)/length(l1)
或者对于更一般的情况转换为 array
,然后使用 apply
ar1 <- array(unlist(l1), dim = c(dim(l1[[1]]), length(l1)))
apply(ar1, 1:2, mean, na.rm = TRUE)
apply(ar1, 1:2, median, na.rm = TRUE)
apply(ar1, 1:2, sd, na.rm = TRUE)
我有一个包含 10 个数据框的列表,其中每个元素代表一个不同的变量。
l1 <- list(d1=data.frame(a=c(1,2,3), b=c(4,5,6)),
d2=data.frame(a=c(3,2,1), b=c(6,5,4)),
d3=data.frame(a=c(2,2,2), b=c(5,5,5)))
我想对所有数据帧的每个对应元素取平均值。 因此,对于元素 [1,1],我的平均值为 (1,3,2)。 我可以为一个职位做到这一点:
m1_1<-mean(unlist(lapply(l1, function(x) (x[[1,1]]))))
有没有办法在整个数据帧上扩展索引? 谢谢, M.
我们可以用Reduce
得到对应元素的和(+
),然后除以list
length
Reduce(`+`, l1)/length(l1)
或者对于更一般的情况转换为 array
,然后使用 apply
ar1 <- array(unlist(l1), dim = c(dim(l1[[1]]), length(l1)))
apply(ar1, 1:2, mean, na.rm = TRUE)
apply(ar1, 1:2, median, na.rm = TRUE)
apply(ar1, 1:2, sd, na.rm = TRUE)