用 dplyr 和 rowwise 采样

sample with dplyr and rowwise

这是我的例子:

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 ))))),
  )

不幸的是,我不知道如何让每个人都重现同一个例子,但这是我在我的电脑上得到的输出

第一行显示 col_1col_2 不同,而我希望它们相同。此外,我希望 col_1col_2set_diff 列中采样。谁能帮我澄清一下我的错误?

The very first row shows that col_1 and col_2 are different, while I expect them to be the same.

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

I expect col_1 and col_2 be sampled from set_diff column.

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

中抽取样本