Преобразование вложенного суммирования в матричное умножение R-типа - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь реализовать вложенное суммирование в R. Реализация цикла for:

 sum = 0
  for(i in 1:n){
    for(j in 1:n){
      for(k in 1:n){
        sum = sum + w[i,j]*w[j,k]
      }
    }
  }

, где w - симметричная квадратная матрица, а n - количество строк (или столбцов).). Пожалуйста, смотрите формулу Я пытаюсь реализовать.(Так что я не позволил мне писать латекс и не добавлять сюда изображение.)

Вложенные циклы, указанные выше, занимают вечность.Как мне эффективно реализовать этот способ R?

1 Ответ

0 голосов
/ 24 августа 2018

Попробуйте это:

Sum2 <- sum(w %*% w)

all.equal(Sum, Sum2)
## [1] TRUE

Примечание

Мы использовали для сравнения:

# input
set.seed(123)
n <- 5
w <- matrix(rnorm(n^2), n)

# from question
Sum = 0
  for(i in 1:n){
    for(j in 1:n){
      for(k in 1:n){
        Sum = Sum + w[i,j]*w[j,k]
      }
    }
  }
...