2012-08-08 75 views
3

对不起,发布这个,因为我知道这已经出现在各种伪装之前,但我真的不明白我在做什么错误/ R的内部工作!R计算矩阵/数组的部分的sd

我有一个(多维)数据阵列,我从我正在玩的netcdf文件中读入数据。我想计算一些阵列上的“统计数据”,例如:

data <- array(runif(96*73*26*12), dim=c(96,73,26,12)) 

part.mean <- apply(data[10:23, 42:56, ,], c(3,4), mean) 

很好用。但是:

part.sd <- apply(data[10:23, 42:56, ,], c(3,4), sd) 

失败。

然后,对我的数组进行子集并计算与我可以在上面计算的平均值相关的sd的正确方法是什么?

谢谢你的时间!

亚历

+0

在手册('?sd')中,写道使用带矩阵的sd已被弃用,您必须这样使用它:'sapply(x,sd)'。所以,你的代码变成:'apply(data [10:23,42:56,],c(3,4),function(x){sapply(x,sd)})' – Pop 2012-08-08 11:09:33

+1

sd < - apply(data [10:23,42:56,],c(3,4),function(x)sd(as.vector(x))'与'mean'函数一致 – dickoa 2012-08-08 11:09:40

+0

@ dickoa我相信这是正确的答案,你想发布它吗? – Andrie 2012-08-08 11:10:25

回答

5

sd原理不同与matricies比mean一样。它产生列标准偏差而不是整个矩阵,

part.sd <- apply(data[10:23, 42:56, ,], c(3,4), function(x) sd(as.vector(x))) 

应该给你一个结果与平均值结果一致。

+0

感谢您的明确示例! – 2012-08-08 11:12:33