簡體   English   中英

R:基於另一個列表重復列表的元素

[英]R: repeat elements of a list based on another list

我搜索過這個但是徒勞無功。 問題是我有兩個列表,首先是要重復的元素,例如

my.list<-list(c('a','b','c','d'), c('g','h'))

第二個列表是每個元素重復的次數

repeat.list<-list(c(5,7,6,1), c(2,3))

我想創建一個新列表,其中my.list中的每個元素都基於repeat.list重復,即結果:

[[1]]
[1] "a" "a" "a" "a" "a" "b" "b"  "b" "b" "b" "b" "b" "c" "c" "c" "c" "c" "c" "d" 
[[2]]
[1] "g" "g" "h" "h" "h" 

預先感謝您的幫助

使用mapply

mapply(rep, my.list, repeat.list)
[[1]]
 [1] "a" "a" "a" "a" "a" "b" "b" "b" "b" "b" "b" "b" "c" "c" "c" "c" "c" "c" "d"

[[2]]
[1] "g" "g" "h" "h" "h"

lapply也有訣竅,但更冗長:

lapply(seq_along(my.list), function(i)rep(my.list[[i]], repeat.list[[i]]))
[[1]]
 [1] "a" "a" "a" "a" "a" "b" "b" "b" "b" "b" "b" "b" "c" "c" "c" "c" "c" "c" "d"

[[2]]
[1] "g" "g" "h" "h" "h"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM