我的补充有一个最大的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转换为矩阵,这在大数据集中也很慢。
有更快的方法吗?