我有一个很大的距离矩阵(约3GB),如下所示:
.Wait()
自:
type street 1 street 2 street 3
coffee 2 1 19
restaurant 3 12 4
restaurant 4 3 2
bar 5 9 7
tram 6 16 1
实际数据是几千行,几千行。我想找到第一,第二,第三等最接近的类型'每列('街道')。理想情况下,输出看起来像这样:
street1<-c(2,3,4,5,6)
street2<-c(1,12,3,9,16)
street3<-c(19,4,2,7,1)
type<-c("coffee","restaurant","restaurant","bar","tram")
df<-data.frame(type,street1,street2,street3)
因此也保留了最近类型的距离。此外,当两种类型之间的距离相等时,可以选择其中一种。
我成功地使用代码选择了第一个最近的代码(并将第一个&#39; type&#39;列设置为行名称):
street closest.1 closest.2 closest.3 distclosest.1 distclosest.2 etc.
street1 coffee restaurant restaurant 2 3
street2 coffee restaurant bar 1 3
street3 tram restaurant restaurant 1 2
然而,我不知道如何将其扩展到第二,第三近等。
当然,我已经调查过相关文章。例如,我试图使用此处提供的所有答案:
Fastest way to find *the index* of the second (third...) highest/lowest value in vector or column
或
Fastest way to find second (third...) highest/lowest value in vector or column
但他们要么给我错误,要么我无法将它们调整到我的首选输出中(由于我的R知识有限)。或者(如图所示)由于文件的大小,运行时间太长。
此外,我尝试以另一种方式完成相同的操作,尝试将每列的最小值替换为1000000,这样我就可以再次使用which.min(我猜,这是一种相当麻烦的方式)。我尝试使用以下代码提供的代码:
Replace maximum value of each column
但它给了我一堆错误。以不同方式执行此操作也会替换其他列中的值。
有关如何解决此问题的任何想法?非常感谢提前!