Если вы хотите использовать меньше кода, вы также можете использовать norm
в пакете stats
(«F» означает Forbenius, что является евклидовой нормой ):
norm(matrix(x1-x2), 'F')
Хотя это может выглядеть немного лучше, но не быстрее.Действительно, быстрый тест на очень больших векторах показывает небольшую разницу, хотя метод so12311 немного быстрее.Сначала мы определяем:
set.seed(1234)
x1 <- rnorm(300000000)
x2 <- rnorm(300000000)
Затем проверка на время дает следующее:
> system.time(a<-sqrt(sum((x1-x2)^2)))
user system elapsed
1.02 0.12 1.18
> system.time(b<-norm(matrix(x1-x2), 'F'))
user system elapsed
0.97 0.33 1.31