我认为向量
nth_RT
没有与您的
Block
和
Subject
在里面
df
。所以我建议您创建一个矩阵或数据。框架以清楚地显示对应关系。例如
grid <- expand.grid(Block = unique(df$Block), Subject = unique(df$Subject))
grid_nth_RT <- cbind(grid, nth_RT)
然后你会得到:
> grid_nth_RT
Block Subject nth_RT
1 1 1 0.61
2 2 1 0.47
3 3 1 0.50
4 1 2 0.53
5 2 2 0.50
6 3 2 0.56
然后,我们可以使用for循环遍历每个
块
-
主题
一对
df$nth <- array(0, nrow(df))
for(i in 1:nrow(grid_nth_RT)) {
index <- df$Block == grid_nth_RT[i,"Block"] &
df$Subject == grid_nth_RT[i,"Subject"]
df$nth[index] <- quantile(df[index,"RT"], grid_nth_RT[i,"nth_RT"])
}
我们发现
index
第i行的所有行
块
-
主题
。然后我们可以子集
df[index,"RT"]
我们计算
df[索引,“RT”]
按百分比
grid_nth_RT[i,"nth_RT"]
。我们将结果存储到
df$nth[index]
.
> df
Subject RT Trial Block Rank nth
1 1 234 1 1 1 310.28
2 1 239 3 1 2 310.28
3 1 563 2 1 3 310.28
4 1 230 1 2 1 233.76
5 1 234 3 2 2 233.76
6 1 467 2 2 3 233.76
7 1 111 3 3 1 466.00
8 1 466 2 3 2 466.00
9 1 543 1 3 3 466.00
10 2 44 2 1 1 230.20
11 2 223 3 1 2 230.20
12 2 343 1 1 3 230.20
13 2 34 2 2 1 242.00
14 2 242 3 2 2 242.00
15 2 324 1 2 3 242.00
16 2 54 1 3 1 382.32
17 2 345 3 3 2 382.32
18 2 656 2 3 3 382.32
顺便说一下,从你的代码
quantile(df$RT ~ Block * Subject, nth_RT[1])
我想你对
~
.与
~
被称为
formula
在R中,您可以查看此页
https://stat.ethz.ch/R-manual/R-devel/library/stats/html/formula.html
了解更多
公式
在R。