Как вычислить суммирование переменных в r - PullRequest
0 голосов
/ 05 апреля 2019

Я пытаюсь вычислить простое суммирование (чтобы узнать, как это работает на r, а затем использовать в более сложной задаче) в r.

Это сумма, которую я пытаюсь вычислить

! (https://imgur.com/1IHl3yj)

sum_{i=1}^5 (x^i), где x от 1:5.

в основном результат должен быть вектором, составленным так (sum(1^i),sum(2^i),sum(3^i),sum(4^i),sum(5^i)), чтобы позже я мог суммировать его, чтобы получить общую сумму или автоматически сумма. (равно 5699).

Код, который я пытался использовать, следующий:

for(i in 1:5){
  for(x in 1:5){
  a[i] <- sum(x^(i))
  }
  }
a

однако результатом является этот вектор

[1]    5   25  125  625 3125

это только делает 1^5, 2^5, 3^5, 4^5, 5^5

Есть идеи, как это сделать?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Это решает вашу проблему без необходимости for -циклов, но более R-подобный sapply

vec <- sapply(1:5,function(x) sum(x^(1:5)))

vec
[1]    5   62  363 1364 3905


Sum <- sum(vec)

Sum
[1] 5699
0 голосов
/ 05 апреля 2019

Конечно, лучше использовать встроенные функции (например, sapply, sum) в R, потому что они оптимизированы и иногда реализуются на более быстром языке программирования, таком как C. С другой стороны, циклы For выполняются внутри R и могут быть очень медленными.

Следующий код должен выполнять то, о чем вы просили, и может быть полезен в учебных целях:

# initialize vector
a <- c()

for(x in 1:5) {
  # loop through all x

  # calculate sum for some x
  sum <- 0
  for(i in 1:5) {
    sum <- sum + x^i
  }
  # append result to vector a
  a <- c(a, sum)
}

print(a)
[1]    5   62  363 1364 3905
sum(a)
[1] 5699
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...