6
我在dplyr
,tidyr
中做了一系列事情,因此如果可能的话,希望保留管道解决方案。添加NA以使所有列表元素长度相等
我有在各构成要素的数量不均衡的列表:我想知道,如果有一个整洁的一个衬垫,以每个元素填补了来港,使得它们都是相同长度的
lolz <- list(a = c(2,4,5,2,3), b = c(3,3,2), c=c(1,1,2,4,5,3,3), d=c(1,2,3,1), e=c(5,4,2,2))
lolz
$a
[1] 2 4 5 2 3
$b
[1] 3 3 2
$c
[1] 1 1 2 4 5 3 3
$d
[1] 1 2 3 1
$e
[1] 5 4 2 2
具有最大的项目元素:
我有2衬垫:
lolz %>% lapply(length) %>% unlist %>% max -> mymax
lolz %>% lapply(function(x) c(x, rep(NA, mymax-length(x))))
$a
[1] 2 4 5 2 3 NA NA
$b
[1] 3 3 2 NA NA NA NA
$c
[1] 1 1 2 4 5 3 3
$d
[1] 1 2 3 1 NA NA NA
$e
[1] 5 4 2 2 NA NA NA
想知道如果我失去了一些东西更快/更优雅。
从来没有意识到,你可以只是简单地覆盖对象的长度。太好了! – MichaelChirico
我也不知道 - 有没有人有任何关于这个功能发生了什么?即“长度< - ”'的其他用途? – jalapic
这只是lapply(lolz,function(x){length(x)< - max(长度(lolz)); x})'的简写形式。并且'length(x)< - value' _“可以用来重置一个向量的长度,如果一个向量被缩短,那么额外的值被丢弃,当一个向量被延长时,它会被NAs填充到新的长度(对于原始矢量,nul)“_(见'?length') – lukeA