【问题标题】:sample with dplyr and rowwise使用 dplyr 和 rowwise 采样
【发布时间】:2020-03-30 17:15:50
【问题描述】:

这是我的例子:

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 列中采样。谁能帮我澄清一下我的错误?

【问题讨论】:

    标签: r dplyr sample rowwise


    【解决方案1】:

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

    set.seed(7) 确保每次运行脚本时,它都会创建相同的my_df。这并不意味着每次运行sample 时,它都会采样相同的数字,因此col_1col_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) 中抽取样本。

    【讨论】:

      猜你喜欢
      • 2016-01-10
      • 2023-04-10
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      相关资源
      最近更新 更多