用 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_1
和 col_2
不同,而我希望它们相同。此外,我希望 col_1
和 col_2
从 set_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_1
和 col_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)
.
中抽取样本
这是我的例子:
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_1
和 col_2
不同,而我希望它们相同。此外,我希望 col_1
和 col_2
从 set_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_1
和 col_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)
.