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