我有一个随机/抽样问题,无法解决。假设我想在实验中创建一个随机的顺序来表示刺激,其中包含两个变量,颜色和项目,每个变量具有三个级别。
library(dplyr)
set.seed(42)
participant_id <- 1:12
colour <- c("blue", "green", "red")
item <- c("apple", "banana", "pear")
我希望每个参与者以随机的顺序在列表中看到颜色和项目的随机配对,但从来没有一次看到任何单个值。
我可以看下面的代码-每个参与者以随机顺序看到每种颜色一次-但不知道如何确保与每种颜色配对的项目也可以不重复出现。
# dataframe of all possible combinations
all_permutations <- crossing(participant_id, colour, item)
my_list <- all_permutations %>%
group_by(participant_id, colour) %>%
# randomly sample one row of item, per colour and participant
sample_n(1) %>%
group_by(participant_id) %>%
# randomly re-order within grouping
sample_frac()
head(my_list, 15)
# A tibble: 15 x 3
# Groups: participant_id [5]
participant_id colour item
<int> <chr> <chr>
1 1 blue pear
2 1 red apple
3 1 green pear
4 2 green banana
5 2 blue pear
6 2 red banana
7 3 blue pear
8 3 green apple
9 3 red banana
10 4 red pear
11 4 green banana
12 4 blue pear
13 5 red banana
14 5 green apple
15 5 blue pear
任何建议,我们将不胜感激!提前致谢。
答案 0 :(得分:1)
这是基本的R解决方案。如果只想对向量的所有元素进行一次采样,则只需ES6
,它将返回sample(vec)
的排列。
vec