重塑多维数组

Chr*_*lte 4 r multidimensional-array reshape

我有一个表示每小时温度数据的数组,并希望计算每日最大值(或最小值,或均值).我可以使用for循环来做到这一点,但我相信在R中必须有更好的方法来做到这一点.

require(ncdf4)
nc <- nc_open('file.nc')
t2 <- ncvar_get(nc,var='T2')  # [ncols, nrows, nsteps]
Run Code Online (Sandbox Code Playgroud)

现在t2是一个阵列,每天有3144个小时的时间步长.我想要的是:

t2.max[ncols, nrows, 31]
Run Code Online (Sandbox Code Playgroud)

或者,更一般地说,我想重塑t2:

t2.reshape[ncols, nrows, ndays, 24]
Run Code Online (Sandbox Code Playgroud)

从那里我可以使用apply来计算每日平均值或最大值或其他.

我希望结果是一个数组,而不是数据框.

建议?我尝试使用reshape包中的melt/cast,但无法理解如何指定所需的公式.

42-*_*42- 8

如果t2是一个31个月的744小时时间步长的数组"那么它有744行和其他维度?(你没有告诉我们ncol是744还是nrow是744.我们假设它是nrow)

 array( tc, , dim =c( 31, 24, nrows,  ncols) )
Run Code Online (Sandbox Code Playgroud)

另一方面,如果它是[nrow,ncols,744],你可以使用精子重新制作它,行如上所述:

 array( aperm(tc, c(3,1,2)) , dim =c( 31, 24, nrows,  ncols) )
Run Code Online (Sandbox Code Playgroud)

有一个包含'rowMax'和'rowMin'函数的包,它可以为您提供一个您不需要发明的矢量化方法.(它来自Bioconductor存储库的Biobase包.)