将数据转换为矩阵并使用NA填充

时间:2016-03-11 10:03:56

标签: r matrix dataframe

我有一个数据列表,我希望将其转换为矩阵。我知道我的矩阵需要的确切大小,但数据并没有完全填满它。 例如,对于长度为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]

3 个答案:

答案 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<- listvector不相等的情况。在这种情况下,如果我们需要转换为lengthdata.frame,我们会填充NAs。