2016-04-23 34 views
0

我想知道如何在列表矩阵上做colMeans。R:如何在矩阵列表上做colMeans

请在R表明如何做到这一点。

非常感谢。

这里是我的数据集的样子:

> dataset 
    [,1]  [,2]  
[1,] 22.04031 28.03182 
[2,] 23.94481 28.17275 
[3,] 16.39071 25.44523 
[4,] 22.10198 22.45534 
[5,] 24.95194 27.95778 
[6,] 33.09007 36.74856 

我colMeans后期望的结果将是做平均在两个山坳[,1],[2]。这两列的平均值分别为23.75330和28.13524。

下面是关于这个数据集的其他信息:轰然坍塌数据集

> str(dataset) 
List of 12 
$ : num 22 
$ : num 23.9 
$ : num 16.4 
$ : num 22.1 
$ : num 25 
$ : num 33.1 
$ : num 28 
$ : num 28.2 
$ : num 25.4 
$ : num 22.5 
$ : num 28 
$ : num 36.7 
- attr(*, "dim")= int [1:2] 6 2 

。列值是我想要的colMeans。

> melt(dataset) 
    Var1 Var2 value  NA 
1  1 1 22.04031 28.03182 
2  2 1 23.94481 28.17275 
3  3 1 16.39071 25.44523 
4  4 1 22.10198 22.45534 
5  5 1 24.95194 27.95778 
6  6 1 33.09007 36.74856 
7  1 2 22.04031 28.03182 
8  2 2 23.94481 28.17275 
9  3 2 16.39071 25.44523 
10 4 2 22.10198 22.45534 
11 5 2 24.95194 27.95778 
12 6 2 33.09007 36.74856 
+0

'sapply(myList,colSums)'做你想要的吗? –

+0

nope ..它显示:'x'必须是至少有两个维度的数组。 –

+0

请在你的问题中打印出你想要的结果。你说“他的列值是我想要的colMeans”,但是然后说你想要“至少有两个维度的数组”。这很混乱。 – lmo

回答

3

由于您的列表中有一个dim属性,你可以使用:

mat <- array(unlist(dataset), dim = dim(dataset)) 
colMeans(mat) 

编辑:谢谢你,@RichardScriven,对于改善。

+1

由于dim的第一个值为'nrow',第二个值将被丢弃,所以你甚至可以将它缩短为'matrix(unlist(dataset),dim(dataset))'。 –

+0

好知道我需要首先取消数据集的清单。它只是使用这个:'colMeans(matrix(unlist(dataset),ncol = 2))' –

+0

@RichardScriven谢谢!我也改变了函数'array'来解释两个以上的维度。 – Laterow