根据列表对象的另一列添加列

时间:2017-03-14 06:31:10

标签: r

我在R

中有一个列表对象
 dl <- list(matrix(c(1,5,.2,.7), nrow=2,dimnames=list(c(),c("x","y"))), matrix(c(0,1,.01,.4), nrow=2,dimnames=list(c(),c("x","y") )))

我想在列表的每个元素中添加另一列z <- rbinom(2,1,y)。即z是bernoulli随机变量,每个列表具有概率向量y。到目前为止我做了:

a=dl[[1]]
a=data.frame(a)
a$z <- with(a, rbinom(2,1,y))

b=dl[[2]]
b=data.frame(b)
b$z <- with(b, rbinom(2,1,y))

但这种编码看起来很混乱。

1 个答案:

答案 0 :(得分:1)

这是你在找什么?

> lapply(dl,FUN=function(mat) z <- cbind(mat,rbinom(2,1,mat[,2])))
[[1]]
     x   y  
[1,] 1 0.2 0
[2,] 5 0.7 0

[[2]]
     x    y  
[1,] 0 0.01 0
[2,] 1 0.40 1