将长度不均匀的列表向量转换为矩阵

时间:2016-08-31 10:53:28

标签: r list matrix coercion

我有一个向量,一个只有一列的数据框,其中包含不均匀长度的列表:

Step-1  F1 = rank FINALORDER..
Step-2  Group BY A1; ie ID.
Step-3  F2 = foreach byid generate MAX(FINAL.rank_FINAL) AS mx, '31-Dec-99' as AVAIL_UNTIL1.
Step-4  F3 = join F1 by rank_FINALORDER with F2 by mx as left outer join.
Step-5  F4 generated the required column with (AVAIL_UNTIL1 is null)? F1::A3 : F2::AVAIL_UNTIL1 as AVAIL_UNTIL..

我希望将其转换为矩阵,填补data = list( c(349, 364, 393, 356, 357, 394, 334, 394, 343, 365, 349), c(390, 336, 752, 377), c(670, 757, 405, 343, 1109, 350, 372), c(0, 0), c(), c(1115, 394, 327, 356, 408, 329, 385, 357, 357)) 的空白。 所以看起来应该是这样的:

NA

最终,即使只删除349, 364, 393, 356, 357, 394, 334, 394, 343, 365, 349 390, 336, 752, 377, NA, NA, NA, NA, NA, NA, NA 670, 757, 405, 343, 1109,350, 372, NA, NA, NA, NA 0, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA 1115,394, 327, 356, 408, 329, 385, 357, 357, NA, NA 行。我试过了

NAs

然后

data = sapply(data[,1], FUN=unlist)

但我不断得到一个矩阵,其中所有元素都在一列中未列出。请指教。

1 个答案:

答案 0 :(得分:4)

我想这些数据'应该是list而不是vector,然后代码才能正常工作

t(sapply(data, `length<-`, max(lengths(data))))

注意:lengths是一个更快的选项(在最近的R版本中引入)取代sapply(data, length)

数据

data = list(
  c(349, 364, 393, 356, 357, 394, 334, 394, 343, 365, 349),
  c(390, 336, 752, 377),
  c(670, 757, 405, 343, 1109, 350, 372),
  c(0, 0),
  numeric(0),
  c(1115, 394, 327, 356, 408, 329, 385, 357, 357))