【发布时间】:2023-04-09 00:50:02
【问题描述】:
我有 2 个数据框 - 学习 L 行数据和测试 T 行数据。
我想计算一个 L*T 矩阵,其中包含相应元素之间的距离(欧几里得、曼哈顿、余弦...)。
这是我的看法:
distance2 <- function (x1, x2) {
temp <- x1 - x2
sum(temp * temp)
}
m <- matrix(0,nrow(learnData),nrow(testData))
for(td in 1:nrow(testData)) {
for(ld in 1:nrow(learnData)) {
m[ld,td] <- distance2(testData[td,],learnData[ld,])
}
}
我认为这可以以更紧凑的“R”方式完成。有任何想法吗? 谢谢。
【问题讨论】:
-
对于欧几里得,您最好使用
fields包中的rdist。它比dist更快,更适合您的要求(两个数据帧)。见stackoverflow.com/a/10220868/1201032 -
谢谢,我试过了,它完全符合我的要求。我选择了代理包,它做同样的事情,但已经实施了许多不同的措施。