计算dist对象中每一行的百分比,然后将每一行与该百分比进行比较

时间:2020-10-25 18:00:36

标签: r matrix percentile

我的补充有一个最大的dist对象,如下所示

coords = matrix(c(35.0456, -85.2672, 35.1174, -89.9711,45.9728, -83.9422),nrow = 3, ncol=2)
dat = dist(coords,method ="maximum",diag = T,upper = T)
dat
        1       2       3
  1  0.0000  4.7039 10.9272
  2  4.7039  0.0000 10.8554
  3 10.9272 10.8554  0.0000

现在,我需要计算每一行的百分位数,我找到了一个名为“ matrixStats”的程序包,它可以为我完成以下操作

per = rowQuantiles(as.matrix(a), probs=0.75)
per
      1        2        3 
 7.81555  7.77965 10.89130 

但是,我必须首先将dist对象转换为矩阵,但就我而言,我有一个12000 \times 12000的dist对象,在as.matrix()中这种转换太慢了。

此后,我需要将dat中的每一行与百分比向量per中的相应元素进行比较,即

res = matrix(0,3,3)
for(i in 1:3){
    res[i,] = dat[i,] < per[i] 
}

我知道我是否可以使用matrix格式,我不需要使用上面的循环,但是需要将dist转换为矩阵,这在大数据集中也很慢。

有更快的方法吗?

0 个答案:

没有答案