Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
358 views
in Technique[技术] by (71.8m points)

How to create a list with variable number of lists in R

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!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...