這裏可能是一個簡單的問題..但我真的很苦惱,所以非常感謝幫助。如何將四維數組轉換爲三維數組子集的其中一個維的特定元素
我有4d數據,我想轉換成3d數據。該數據具有以下屬性:
lon <- 1:96
lat <- 1:73
lev <- 1:60
tme <- 1:12
data <- array(runif(96*73*60*12),
dim=c(96,73,60,12)) # fill with random test values
我想這樣做是計算出前幾個級別的均值(比如1:6)。新數據的格式如下:
new.data <- array(96*73*12), dim=c(96,73,12)) # again just test data
但會包含前5個數據級的平均值。目前我唯一可以做到的方法是編寫一個相當低效的循環,提取前5個級別中的每一個,並將其中的總和除以5得到平均值。
我曾嘗試:
new.data <- apply(data, c(1,2,4), mean)
這很好地給了我所有的垂直高度的平均值,但不能瞭解如何子集的第三維得到只有少數的平均!例如
new.data <- apply(data, c(1,2,3[1:5],4), mean) # which returns
Error in ds[-MARGIN] : only 0's may be mixed with negative subscripts
我渴望得到一些幫助!
感謝您的回答!我雖然它會很簡單,但我覺得我有點困惑! – 2012-01-15 17:28:30
如果這確實回答了這個問題,那麼通過點擊複選標記就可以爲其他讀者提供幫助。 (目前我並不需要額外的積分,但是在使用這張支票之前,這個問題會一直顯示爲「未解答的問題」。) – 2012-01-15 17:59:00