R 基于单元格值从矩阵行中采样单元格
10x10矩阵包含绘图过程中在给定行中选择的任何单元格的“可能性”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
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
这显然是太多的工作了。在忽略对角线中的NA值的情况下,使用权重进行采样的更好方法是什么?我认为您需要的是
sample
函数您可以使用apply
和sample
从每行中随机选择一个元素。我们创建了一个自定义函数,它包装sample
,以处理对角线上缺少的值,并使用正确的权重。一件方便的事情是,在使用na.ommit
删除缺少的值后,生成的向量仍然有名称,因此我们可以使用相应的概率作为prob
参数的权重对名称进行采样
mat