让我说我有以下两个集合。
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列。但我不知道如何去做。
答案 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)