从数据框列表中提取样本

3

我有以下的list1list2:

df1   <- data.frame(x=(1:3),Q=(3:5))
df2   <- data.frame(x=(1:3),Q=(3:5))
df3   <- data.frame(x=(1:3),Q=(3:5))
list1 <- list(df1,df2,df3)
list2 <- list(2,3,6)

我想要在每个list1元素中根据对应的list2值随机从Q中进行抽样。

因此,对于第一对列表元素,我将从Q中抽样2次。

到目前为止,我已经做到了:

df1   <- data.frame(x=(1:3),Q=(3:5))
z <- 2
sapply(1:z,function(i) sample(df1$Q,1))

但我在尝试将mapply应用于两个列表中所有元素对时遇到了困难。

2个回答

5
这里有一种使用mapply的方法:
mapply(function(x, y) sample(x[["Q"]], y, replace = TRUE), list1, list2)

0

不确定这是否是您想要的,但它可能会有所帮助:

FUN <- function(x, z) sapply(1:z,function(i) sample(x[["Q"]], 1))
lapply(seq_along(list1), function(i) FUN(list1[[i]], list2[[i]]))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接