0

我在堆栈交换中找不到解决方案。

我有以下示例矩阵(仅显示前 8 个值),显示 20 次公平硬币翻转的总和(正面 = 1,反面 = 0)。

print(Flips)
     [,1]
 [1,] 16  
 [2,] 11  
 [3,]  8   
 [4,]  9   
 [5,]  9   
 [6,]  7   
 [7,] 10  
 [8,] 14  

我有所有可能的成功翻转(正面)的 p 值,0 到 20 保存在单独的对象中,p 值(使用二项式分布计算)

read.table("p_values.txt", header=T)
   ID Heads    p_value
1   1     0 0.0000010
2   2     1 0.0000191
3   3     2 0.0001812
4   4     3 0.0010872
5   5     4 0.0046206
6   6     5 0.0147858
7   7     6 0.0369644
8   8     7 0.0739288
9   9     8 0.1201344
10 10     9 0.1601791
11 11    10 0.1761971
12 12    11 0.1601791
13 13    12 0.1201344
14 14    13 0.0739288
15 15    14 0.0369644
16 16    15 0.0147858
17 17    16 0.0046206
18 18    17 0.0010872
19 19    18 0.0001812
20 20    19 0.0000191
21 21    20 0.0000010

我想做的是为矩阵“Flips”分配一个新列,该矩阵根据我在 p 值文件中的数据为每一行分配一个 p 值。

例如,新矩阵的 ap 值为 0.00462055 分配给行 [,1]。我对 R 编程很陌生,我知道如何使用 cbind 分配一个新列,但我不确定如何让 R 为其相应的成功次数/20 分配一个 p 值...

4

1 回答 1

1

match如果数据未排序,您可以使用

 cbind(Flips, df1[,3][match(Flips[,1], df1$Heads)])
于 2015-07-27T06:38:36.780 回答