4

私はこれを検索しましたが、無駄です。問題は、たとえば、最初に繰り返される要素を持つ2つのリストがあることです

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

2番目のリストは、各要素が繰り返される回数です

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" 

よろしくお願いいたします。

4

1 に答える 1

8

使用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"
于 2012-05-29T17:09:29.173 に答える