Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 基于单元格值从矩阵行中采样单元格_R_Matrix_Random_Sampling - Fatal编程技术网

R 基于单元格值从矩阵行中采样单元格

R 基于单元格值从矩阵行中采样单元格,r,matrix,random,sampling,R,Matrix,Random,Sampling,10x10矩阵包含绘图过程中在给定行中选择的任何单元格的“可能性” id1 id2 id3 id4 id5 id6 id7 id8 id9 id10 id1 NA 0.5 0.7 0.5 0.5 0.4 0.4 0.4 0.4 0.4 id2 0.5 NA 0.5 0.5 0.5 0.4 0.4 0.4 0.4 0.4 id3 0.7 0.5 NA 0.5 0.5 0.4 0.4 0.4 0.4 0.4 id4 0.5 0.5 0.5 NA

10x10矩阵包含绘图过程中在给定行中选择的任何单元格的“可能性”

        id1 id2 id3 id4 id5 id6 id7 id8 id9 id10
id1     NA  0.5 0.7 0.5 0.5 0.4 0.4 0.4 0.4 0.4
id2     0.5 NA  0.5 0.5 0.5 0.4 0.4 0.4 0.4 0.4
id3     0.7 0.5 NA  0.5 0.5 0.4 0.4 0.4 0.4 0.4
id4     0.5 0.5 0.5 NA  0.5 0.4 0.4 0.4 0.4 0.4
id5     0.5 0.5 0.5 0.5 NA  0.4 0.4 0.4 0.4 0.4
id6     0.4 0.4 0.4 0.4 0.4 NA  0.5 0.7 0.5 0.5
id7     0.4 0.4 0.4 0.4 0.4 0.5 NA  0.5 0.5 0.5
id8     0.4 0.4 0.4 0.4 0.4 0.7 0.5 NA  0.5 0.5
id9     0.4 0.4 0.4 0.4 0.4 0.5 0.5 0.5 NA  0.5
id10    0.4 0.4 0.4 0.4 0.4 0.5 0.5 0.5 0.5 NA
每次绘制都是按行进行的,选择单元格的几率是该单元格的值除以给定行中所有单元格值的总和。例如,我需要从
id1
行的
id2
id10
中选择一个单元格。最可能的选择是
id3
,因为它的
0.7
值是行中最高的

我需要一个名为
result
的向量,它在我选择后存储每行的选择。我目前的计划是:

  • 跨行求和并将结果存储为向量
    denom
  • 为每行生成一个介于0和该和之间的随机均匀变量
  • 如果该值介于0.0和0.5之间,则第1行中选择的人员为id2;如果为0.51-1.20,则所选人员为id3…等

  • 这显然是太多的工作了。在忽略对角线中的NA值的情况下,使用权重进行采样的更好方法是什么?

    我认为您需要的是
    sample
    函数

    您可以使用
    apply
    sample
    从每行中随机选择一个元素。我们创建了一个自定义函数,它包装
    sample
    ,以处理对角线上缺少的值,并使用正确的权重。一件方便的事情是,在使用
    na.ommit
    删除缺少的值后,生成的向量仍然有名称,因此我们可以使用相应的概率作为
    prob
    参数的权重对名称进行采样

    mat