c_k <- c(2, 4, 10, 50, 100, 500, 10000, 100000)
c_flips <- lapply(c_k, function(n) replicate(1000, sum((sample(0:1, n, replace=TRUE)))))
d_fk <- c_k/2
d_flips <- lapply(seq_along(d_fk), function(i) lapply(c_flips[i], function(v) v - d_fk[i])[1])
在上面的代码中,我试图从c_flips
中的每个元素中减去d_fk
中的相应值。我尝试过使用mapply,几种不同的lapply,但我似乎永远不会得到与c_flips
相同的数据类型。
我希望d_flips
成为c_flips
之类的向量列表,但我得到一个长度为1的列表列表,其中向量是列表中唯一的元素。
R专业人员可以帮助我吗?
答案 0 :(得分:1)
希望我理解正确。使用
d_flips<-mapply('-',c_flips,d_fk,SIMPLIFY=FALSE)
结果的str
如下所示:
List of 8
$ : num [1:1000] 1 -1 0 0 -1 -1 0 -1 -1 -1 ...
$ : num [1:1000] 0 -1 0 -1 -1 1 0 0 -2 0 ...
$ : num [1:1000] -1 0 -3 1 -2 0 1 1 0 -3 ...
$ : num [1:1000] 1 1 0 9 -2 6 -4 -3 5 5 ...
$ : num [1:1000] 2 3 0 0 2 -14 -9 -7 -1 8 ...
$ : num [1:1000] -24 10 -4 1 -15 1 5 7 0 -4 ...
$ : num [1:1000] -27 -5 5 82 68 -9 53 -154 31 -74 ...
$ : num [1:1000] -96 193 -171 11 -186 216 79 24 -114 -25 ...