我试图获得20个长度为1000的序列,每个序列通过在序列中的前一个元素中随机添加1或0来生成。
我试过了:
h <- replicate(20, rep(0, 1000), simplify=FALSE)
lapply(h, function(v) for(i in 2:1000){ v[i] = v[i - 1] + 1 })
但是lapply中的for循环似乎没有做任何事情,我留下了20个1000 0的列表。
这样做的工作方式是什么?如果有一种方法可以在没有循环的情况下完成,甚至更好:)
由于
答案 0 :(得分:2)
set.seed(100)
x <- replicate(20, cumsum(sample(0:1, 1000, replace = TRUE)), simplify = FALSE)
str(x)
# List of 20
# $ : int [1:1000] 0 0 1 1 1 1 2 2 3 3 ...
# $ : int [1:1000] 0 0 1 2 2 2 2 2 3 4 ...
# $ : int [1:1000] 1 2 3 3 4 5 6 6 7 7 ...
# $ : int [1:1000] 0 0 1 1 2 2 3 4 4 5 ...
# $ : int [1:1000] 1 1 1 2 2 2 2 3 3 3 ...
# $ : int [1:1000] 1 2 2 3 4 5 6 7 7 7 ...
# $ : int [1:1000] 0 0 0 1 2 3 3 4 5 6 ...
# $ : int [1:1000] 1 1 1 2 3 3 4 4 4 5 ...
# $ : int [1:1000] 1 1 1 1 1 1 1 1 1 2 ...
# $ : int [1:1000] 1 1 2 3 3 3 3 3 3 3 ...
# $ : int [1:1000] 1 1 1 1 2 3 3 4 4 5 ...
# $ : int [1:1000] 0 0 1 1 1 2 3 3 3 4 ...
# $ : int [1:1000] 0 0 1 1 1 2 2 3 4 4 ...
# $ : int [1:1000] 0 0 1 1 2 2 3 4 4 4 ...
# $ : int [1:1000] 0 0 1 2 2 2 2 3 3 3 ...
# $ : int [1:1000] 1 2 3 3 3 4 5 6 6 7 ...
# $ : int [1:1000] 0 0 1 2 2 2 3 3 3 4 ...
# $ : int [1:1000] 1 1 2 3 3 3 3 3 4 4 ...
# $ : int [1:1000] 0 1 1 2 3 3 4 4 4 5 ...
# $ : int [1:1000] 0 0 1 2 2 3 3 4 4 5 ...