Reputation: 435
I am trying to create a list "pool" like this:
> n=10
> pool=list(0:n,0:n,0:n)
> pool
[[1]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 0 1 2 3 4 5 6 7 8 9 10
Instead of typing the 0:n three times, I need to use a line of code to represent it because the number of repeats changes over time. I tried:
> K=3
> pool=NULL
> for (i in 1:K){
+ pool=list(pool,0:n)
+ }
> pool
[[1]]
[[1]][[1]]
[[1]][[1]][[1]]
NULL
[[1]][[1]][[2]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[1]][[2]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 0 1 2 3 4 5 6 7 8 9 10
but they are different. How can I make it? Thanks!
Upvotes: 0
Views: 137
Reputation: 388817
You can use replicate
:
n = 10
K = 3
pool <- replicate(K, 0:n, simplify = FALSE)
pool
#[[1]]
# [1] 0 1 2 3 4 5 6 7 8 9 10
#[[2]]
# [1] 0 1 2 3 4 5 6 7 8 9 10
#[[3]]
# [1] 0 1 2 3 4 5 6 7 8 9 10
replicate
is similar to purrr::rerun
pool <- purrr::rerun(K, 0:n)
Upvotes: 1
Reputation: 21264
Use rep
:
k <- 3
rep(list(0:n), k)
Or you can use purrr::map
:
purrr::map(1:k, ~0:n)
Output
[[1]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[2]]
[1] 0 1 2 3 4 5 6 7 8 9 10
[[3]]
[1] 0 1 2 3 4 5 6 7 8 9 10
Upvotes: 1