Может кто-нибудь объяснить мне проблему с моей суммой в R - PullRequest
2 голосов
/ 13 апреля 2020

для данной матрицы FI хочу вычислить сумму 2-нормы своих строк, поэтому я использую функцию sum(), но она не работает, как я ожидаю, что здесь будет делать пример

# The matrix F
> F <- matrix(c(9,1,1,1,4,1),nrow=3)
# index of the sum i
> i=1:NROW(F)
#And here is the result 
> sum(norm(F[i,], type = "2")^4)
  [1] 7376.60160040254
# and if i calculate each element of the sum i get
> norm(F[1,], type = "2")^4
  [1] 6724
> norm(F[2,], type = "2")^4
  [1] 289
> norm(F[3,], type = "2")^4
  [1] 4

1 Ответ

1 голос
/ 13 апреля 2020

Я думаю, вы ищете функцию apply. Он применяет функцию по размерам матрицы.

sum(apply(F,MARGIN = 1,function(x){norm(x,type = "2")^4}))
#[1] 7017

Ваша причина не работает, потому что вы присвоили c(1,2,3) i. Затем, когда вы задаете значение F, вы просто получаете всю матрицу.

i=1:NROW(F)
i
#[1] 1 2 3
norm(F,type="2")^4
#[1] 7376.602
norm(F[1:3,],type="2")^4
#[1] 7376.602
norm(F[i,],type="2")^4
#[1] 7376.602

Отказ от ответственности: я не оценил математическую обоснованность этого подхода, только программно воссоздал желаемое поведение ОП.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...