我有一个名为rainfal的矩阵(315576乘19矩阵)。我想将这个矩阵的每一列转换成一个24列的矩阵,这样我就可以得到19个24列矩阵。我已经尝试过这些代码,但仍然有问题可以获得所需的结果。
sapply(seq_along(rainfal), function(i) {
matrix(rainfal[, i], nrow(rainfal)/24, 24, byrow=TRUE)
})
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:1)
如果您想要list
res <- lapply(seq_len(ncol(rainfall)), function(i)
matrix(rainfall[,i], ncol=24, byrow=TRUE) )
sapply(res, dim)
# [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12]
#[1,] 13149 13149 13149 13149 13149 13149 13149 13149 13149 13149 13149 13149
#[2,] 24 24 24 24 24 24 24 24 24 24 24 24
# [,13] [,14] [,15] [,16] [,17] [,18] [,19]
#[1,] 13149 13149 13149 13149 13149 13149 13149
#[2,] 24 24 24 24 24 24 24
set.seed(24)
rainfall <- matrix(sample(1:20, 315576*19, replace=TRUE), ncol=19)
答案 1 :(得分:0)
这是另一种方法,使用R中的矩阵属性:
M <- matrix(1:(19*315576) ,nc=19) # 315576 rows, 19 columns; just an example
dim(M) <- c(315576/24,24,19)
因此,这需要一个具有315,576行和19列的二维矩阵M
,并将其“重新”维度为三维矩阵;基本上是19个矩阵,每个矩阵有315576/24行和24列。然后,如果你更喜欢列表中的19个矩阵,你可以这样做:
lst <- lapply(1:19,function(i)M[,,i])