首页 > 解决方案 > 在同一数据框中随机生成不同变量

问题描述

可以说我有以下两组。

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中的“set 1”不应与复制1中的“set 1”相同。

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

谁能帮我做到这一点?

我知道如何为每组分别生成 20 个复制,如下所示,

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

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

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

标签: rapplysimulationlapply

解决方案


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

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

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

推荐阅读