如何用矩阵的各列的平方根除以矩阵的每个值?

时间:2013-06-15 09:01:40

标签: r

如何通过将每个原始值除以原始矩阵中该列的原始平方值之和的平方根来获得。

data(longley)
X <- as.matrix(longley[,-7])

X/sqrt(colSums(X^2))

获得错误的结果。

2 个答案:

答案 0 :(得分:5)

试试这个:

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

答案 1 :(得分:4)

这有用吗?

data(longley)
X <- as.matrix(longley[,-7])

X <- apply(X, 2 , function(x) x/sqrt(sum(x^2)))
相关问题