在同一数据帧中随机生成不同变量

时间:2018-12-27 01:43:07

标签: r apply simulation lapply

让我说我有以下两个集合。

set1=sample(c("White","Black"),
       20,prob = c(0.6,0.4),replace = TRUE)
set2=sample(c("yes","no"),
            20,prob = c(0.48,0.32),replace = TRUE)

从这个我需要生成20次(随机)时间,其中每个复制都包含随机生成的每个集合中的一列。。例如,复制2中的“集合1”不应与复制1中的“集合1”相同。

换句话说,每个复制都应该随机生成。

有人可以帮助我做到这一点吗?

我知道如何分别为每个集合生成20个副本,如下所示:

replicate(n=20,set1)
replicate(n=20,set2)

但是这里每个变量分别随机生成20次。我需要的是同时复制每个变量(随机生成)。

可能我必须使用lapply,以便我应该创建20个列表,其中每个列表基于set 1和set 2有2列。但我不知道如何去做。

1 个答案:

答案 0 :(得分:2)

我们可以定义一个函数,该函数随机生成数据帧并使用replicate调用20次以获取20个数据帧的列表。

my_func <- function(set1, set2) {
    data.frame(set1 = sample(set1), set2 = sample(set2))
}

replicate(20, my_func(set1, set2), simplify = FALSE)