set.seed(123)
X <- matrix(rnorm(500), 5, 100)
alpha <- matrix(NA, 5, 5)
for (i in 1:5) {
for (j in i:5) {
alpha[i, j] <- alpha[j, i] <- var(X[i,], X[j,])
}
}
print(alpha)
# 改成一個 apply
library(magrittr) # for the "%>%" pipe
ind <- expand.grid(1:nrow(X), 1:nrow(X))
res <-
apply(ind,
1,
function(k) {
var(X[k[1], ], X[k[2], ])
}) %>%
matrix(nrow = nrow(X))
print(res)
identical(alpha, res)
# 對角與非對角分別做,不重覆算
res1 <- matrix(data = NA_real_, nrow = nrow(X), ncol = nrow(X))
diag(res1) <- apply(X, 1, var)
res1[lower.tri(res1)] <-
combn(1:nrow(X), 2) %>%
apply(2, function(k){
var(X[k[1], ], X[k[2], ])
})
res1[upper.tri(res1)] <- res1 %>% t %>% .[upper.tri(.)]
print(res1)
identical(alpha, res, res1)
c2V0LnNlZWQoMTIzKQpYIDwtIG1hdHJpeChybm9ybSg1MDApLCA1LCAxMDApCmFscGhhIDwtIG1hdHJpeChOQSwgNSwgNSkKZm9yIChpIGluIDE6NSkgewogIGZvciAoaiBpbiBpOjUpIHsKICAgIGFscGhhW2ksIGpdIDwtIGFscGhhW2osIGldIDwtIHZhcihYW2ksXSwgWFtqLF0pCiAgfQp9CnByaW50KGFscGhhKQoKIyDmlLnmiJDkuIDlgIsgYXBwbHkKbGlicmFyeShtYWdyaXR0cikgIyBmb3IgdGhlICIlPiUiIHBpcGUKaW5kIDwtIGV4cGFuZC5ncmlkKDE6bnJvdyhYKSwgMTpucm93KFgpKQpyZXMgPC0gCiAgYXBwbHkoaW5kLAogICAgICAxLAogICAgICBmdW5jdGlvbihrKSB7CiAgICAgICAgdmFyKFhba1sxXSwgXSwgWFtrWzJdLCBdKQogICAgICB9KSAlPiUKICBtYXRyaXgobnJvdyA9IG5yb3coWCkpCnByaW50KHJlcykKaWRlbnRpY2FsKGFscGhhLCByZXMpCgojIOWwjeinkuiIh+mdnuWwjeinkuWIhuWIpeWBmu+8jOS4jemHjeimhueulwpyZXMxIDwtIG1hdHJpeChkYXRhID0gTkFfcmVhbF8sIG5yb3cgPSBucm93KFgpLCBuY29sID0gbnJvdyhYKSkKZGlhZyhyZXMxKSA8LSBhcHBseShYLCAxLCB2YXIpCnJlczFbbG93ZXIudHJpKHJlczEpXSA8LSAKICBjb21ibigxOm5yb3coWCksIDIpICU+JQogIGFwcGx5KDIsIGZ1bmN0aW9uKGspewogICAgdmFyKFhba1sxXSwgXSwgWFtrWzJdLCBdKQogIH0pCnJlczFbdXBwZXIudHJpKHJlczEpXSA8LSByZXMxICU+JSB0ICU+JSAuW3VwcGVyLnRyaSguKV0KcHJpbnQocmVzMSkKCmlkZW50aWNhbChhbHBoYSwgcmVzLCByZXMxKQo=
[,1] [,2] [,3] [,4] [,5]
[1,] 1.16126994 -0.03244024 -0.205993645 0.01021443 -0.027761195
[2,] -0.03244024 0.83010514 0.047276073 -0.13219726 0.015491835
[3,] -0.20599364 0.04727607 0.790555193 -0.13062105 0.003433207
[4,] 0.01021443 -0.13219726 -0.130621048 1.04629443 0.016307109
[5,] -0.02776120 0.01549183 0.003433207 0.01630711 0.906947822
[,1] [,2] [,3] [,4] [,5]
[1,] 1.16126994 -0.03244024 -0.205993645 0.01021443 -0.027761195
[2,] -0.03244024 0.83010514 0.047276073 -0.13219726 0.015491835
[3,] -0.20599364 0.04727607 0.790555193 -0.13062105 0.003433207
[4,] 0.01021443 -0.13219726 -0.130621048 1.04629443 0.016307109
[5,] -0.02776120 0.01549183 0.003433207 0.01630711 0.906947822
[1] TRUE
[,1] [,2] [,3] [,4] [,5]
[1,] 1.16126994 -0.03244024 -0.205993645 0.01021443 -0.027761195
[2,] -0.03244024 0.83010514 0.047276073 -0.13219726 0.015491835
[3,] -0.20599364 0.04727607 0.790555193 -0.13062105 0.003433207
[4,] 0.01021443 -0.13219726 -0.130621048 1.04629443 0.016307109
[5,] -0.02776120 0.01549183 0.003433207 0.01630711 0.906947822
[1] TRUE