我想寫一個R腳本,作爲第一步,爲輸入矩陣的每一行計算dist()
和其他東西,然後,作爲腳本的第二步,使用每對輸出矩陣在第一步中得到另一個計算。 我的問題是我無法「保存」從第一步獲得的所有矩陣。有人能告訴我一個好的策略嗎?提高R腳本效率
我的代碼如下所示:
n<- nrow (aa)
output <- matrix (0, n, n)
for (i in 1:n)
{
for (j in i:n)
{
akl<- function (dii){
ddi<- as.matrix (dii)
m<- rowMeans(ddi)
M<- mean(ddi)
r<- sweep (ddi, 1, m)
b<- sweep (r, 2, m)
return (b + M)
}
A<- akl(dist(aa[i,]))
B<- akl(dist(aa[j,]))
V <- sqrt ((sqrt (mean(A * A))) * (sqrt(mean(B * B))))
if (V > 0) {
output[i,j] <- (sqrt(mean(A * B)))/V else output[i,j] <- 0
}
}
}
我想獲得從akl
功能的所有結果矩陣,然後將它們用於計算的其餘部分。 我在這裏展示的腳本在時間上是昂貴的,因爲它每次都計算akl,對於大輸入矩陣是一個問題。
在嘗試避免嵌套的for循環和可能的矢量化之前用'else else {'替換'else'。 – Roland