원래의 행렬에있는 해당 열의 원래 값의 제곱의 합계의 제곱근으로 각 원래 값을 나눔으로써 어떻게 얻을 수 있습니까?행렬의 각 값을 해당 행렬의 각 열의 합계를 제곱근으로 나누는 방법은 무엇입니까?
data(longley)
X <- as.matrix(longley[,-7])
X/sqrt(colSums(X^2))
잘못된 결과 얻기.
원래의 행렬에있는 해당 열의 원래 값의 제곱의 합계의 제곱근으로 각 원래 값을 나눔으로써 어떻게 얻을 수 있습니까?행렬의 각 값을 해당 행렬의 각 열의 합계를 제곱근으로 나누는 방법은 무엇입니까?
data(longley)
X <- as.matrix(longley[,-7])
X/sqrt(colSums(X^2))
잘못된 결과 얻기.
이 시도 :
t(t(X)/sqrt(colSums(X^2)))
벤치 마크 :
library(microbenchmark)
microbenchmark(t(t(X)/sqrt(colSums(X^2))),
apply(X, 2 , function(x) x/sqrt(sum(x^2))))
# Unit: microseconds
# expr min lq median uq max neval
# t(t(X)/sqrt(colSums(X^2))) 28.783 33.1305 34.9455 40.5640 68.147 100
# apply(X, 2, function(x) x/sqrt(sum(x^2))) 100.307 105.1940 106.9975 108.1075 193.015 100
결과에 어떤 문제가 있는지에 정교한하시기 바랍니다. – Roland
sqrt (colSums (X^2))'괜찮 으면서 ('apply'보다 훨씬 빠르지 만)'X/... '할 때'sqrt (colSums (X^2))'의 결과는 전체적으로 재활용됩니다 열과 그래서 당신은 "잘못된 결과"를 얻을. – Michele