1

这是我的例子:

library(dplyr)

n_experiments <- 1000
a <- sample(1:3, n_experiments, replace = T)
b <- sample(1:3, n_experiments, replace = T)


my_df <- data.frame(a = a, b= b)
set.seed(7);my_df <- my_df %>% rowwise() %>% 
  mutate(col_1 = sample(setdiff(c(1,2,3), unique(c(a,b ))),1),
         col_2 = sample(setdiff(c(1,2,3), unique(c(a,b ))),1),
         set =I(list(unique(c(a,b )))),
         set_diff = I(list(setdiff(c(1,2,3), unique(c(a,b ))))),
  )

不幸的是,我不知道如何让每个人都重现相同的示例,但这是我在计算机上得到的输出

df

第一行显示了这一点col_1并且col_2是不同的,而我希望它们是相同的。此外,我期望col_1col_2set_diff列中抽样。有人可以帮我澄清我的错误吗?

4

1 回答 1

1

第一行显示 col_1 和 col_2 不同,而我希望它们相同。

set.seed(7)确保每次运行脚本时,它都会创建相同的my_df. 这并不意味着每次运行时sample,它都会采样相同的数字,因此col_1不需要col_2相同。但是,如果您运行您的代码两次,两者都会得到相同的col_1.

我希望 col_1 和 col_2 从 set_diff 列中采样。

从文档中sample如果 x 的长度为 1,是数字(在 is.numeric 的意义上)并且 x >= 1,则通过 sample 进行采样从 1:x 开始。因此,如果set_diff等于 3,则从 中抽取样本c(1,2,3)

于 2020-03-30T18:08:33.727 回答