Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算列表矩阵的平均值?_R_List_Matrix_Statistics - Fatal编程技术网

R 如何计算列表矩阵的平均值?

R 如何计算列表矩阵的平均值?,r,list,matrix,statistics,R,List,Matrix,Statistics,我有一个关于平均列表矩阵的复杂计算问题 矩阵看起来像 mat <- matrix(list(), 100, 10) [[1]] [1] 1.21.33 1.50 [[2]] [1] 2.1.9.4.5 [[3]] [1] 0.1 0.4 1.5 [[100]] [1] 0.8 0.69 1.42 我希望对100个列表中的所有第一个元素取平均值。换句话说,就是计算(1.21+2.1+0.1+…+0.8)/100。类似地,它可以应用于所有第二个元素,如(1.33+1.9+0.4+…+0.6

我有一个关于平均列表矩阵的复杂计算问题

矩阵看起来像

mat <- matrix(list(), 100, 10)
[[1]]

[1] 1.21.33 1.50

[[2]]

[1] 2.1.9.4.5

[[3]]

[1] 0.1 0.4 1.5

[[100]]

[1] 0.8 0.69 1.42

我希望对100个列表中的所有第一个元素取平均值。换句话说,就是计算(1.21+2.1+0.1+…+0.8)/100。类似地,它可以应用于所有第二个元素,如(1.33+1.9+0.4+…+0.69)/100。还有第三个要素。。。如果可能,可以将此程序应用于mat中的所有10列


如何使用lappy或sapply函数实现这一点?

使用
dplyr
函数bind\u cols绑定
mat[,i]
中的每个列表, “拿排”的意思是

res_in_cols <- apply(mat, 2, function(x) rowMeans(dplyr::bind_cols(x)))

res\u in\u cols使用
dplyr
函数bind\u cols绑定
mat[,i]
中的每个列表, “拿排”的意思是

res_in_cols <- apply(mat, 2, function(x) rowMeans(dplyr::bind_cols(x)))

res\u in\u cols也许您可以尝试
colMeans
+
rbind
以及
apply

as.matrix(asplit(apply(mat, 2, function(x) colMeans(do.call(rbind, x))), 2))

也许您可以尝试
colMeans
+
rbind
以及
apply

as.matrix(asplit(apply(mat, 2, function(x) colMeans(do.call(rbind, x))), 2))

OP位于列_sum/nrow(mat)之后。另外,我尝试了这个方法,但在取消列出它们之后,它并没有给出列的平均值-也许我误解了什么。@Suren我猜OP想为每个单元格获得一个长度为3的数组是的,我认为你是正确的。我想我没有把这个问题读清楚。OP在sum/nrow列(mat)之后。另外,我尝试了这个方法,但在取消列出它们之后,它并没有给出列的平均值-也许我误解了什么。@Suren我猜OP想为每个单元格获得一个长度为3的数组是的,我认为你是正确的。我想我没有很好地阅读这个问题。最好举个小例子。例如,一个较小的矩阵。类似于Thomas的尝试,我认为
应用(mat,2,function(x)colMeans(do.call(rbind,x))
应该适合您。最好给出一个小例子。例如,一个较小的矩阵。类似于Thomas的尝试,我认为
应用(mat,2,function(x)colMeans(do.call(rbind,x))
应该适合您。