从列表列表中减去一个值

时间:2014-03-09 18:27:47

标签: r list nested

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专业人员可以帮助我吗?

1 个答案:

答案 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 ...