我有一个数据列表,我希望将其转换为矩阵。我知道我的矩阵需要的确切大小,但数据并没有完全填满它。 例如,对于长度为95的向量,我想将其转换为25 * 4矩阵。使用矩阵命令不起作用,因为值的数量不适合矩阵,所以我需要一种方法用NA填充它,并逐行填充矩阵。
矩阵的大小在每个场景中都是已知的,但是从一组数据到下一组数据不一致,因此理想情况下,如果数据不可用,将会有一个自动用NA填充矩阵的函数。
示例代码:
example=c(20.28671, 20.28544, 20.28416, 20.28288, 20.28161, 20.28033, 20.27906, 20.27778, 20.27651, 20.27523, 20.27396, 20.27268, 20.27141,
20.27013, 20.26885, 20.26758, 20.26533, 20.26308, 20.26083, 20.25857, 20.25632, 20.25407, 20.25182, 20.24957, 20.24732, 20.24507,
20.24282, 20.24057, 20.23832, 20.23606, 20.23381, 20.22787, 20.22193, 20.21598, 20.21004, 20.20410, 20.19816, 20.19221, 20.18627,
20.18033, 20.17438, 20.16844, 20.16250, 20.15656, 20.15061, 20.14467, 20.13527, 20.12587, 20.11646, 20.10706, 20.09766, 20.08826,
20.07886, 20.06946, 20.06005, 20.05065, 20.04125, 20.03185, 20.02245, 20.01305, 20.00364, 20.00369, 20.00374, 20.00378, 20.00383,
20.00388, 20.00392, 20.00397, 20.00401, 20.00406, 20.00411, 20.00415, 20.00420, 20.00425, 20.00429, 20.00434, 20.01107, 20.01779,
20.02452, 20.03125, 20.03798, 20.04470, 20.05143, 20.05816, 20.06489, 20.07161, 20.07834, 20.08507, 20.09180, 20.09853, 20.10525,
20.11359, 20.12193, 20.13026, 20.13860)
mat=matrix(example,ncol=4,nrow=25)
Warning message:
In matrix(example, ncol = 4, nrow = 25) :
data length [95] is not a sub-multiple or multiple of the number of rows [25]
答案 0 :(得分:5)
虽然我确信这不是最好的答案,但却能达到你想要的效果:
如果您尝试使用超出其长度的指标使用[
对矢量进行子集化,则会使用NA
mat = matrix(example[1:100],nrow = 25, byrow = TRUE, ncol = 4)
这感觉好像有点乱。也许其中一个是更好的R代码。
答案 1 :(得分:4)
你可以试试这个:
debian/control
答案 2 :(得分:2)
如果缺货,我们可以使用mat <- matrix(NA,ncol=4, nrow=25)
mat[1:length(example)] <- example
将NAs填充到所需的长度,然后调用length<-
。
matrix
nC <- 4
nR <- 25
matrix(`length<-`(example, nC*nR), nR, nC)
选项也可用于其他几种情况,即length<-
list
中vector
不相等的情况。在这种情况下,如果我们需要转换为length
或data.frame
,我们会填充NAs。