Как использовать сумму с нижней и верхней границей в R - PullRequest
0 голосов
/ 05 июля 2018

Я хотел бы написать это уравнение в коде R:

log(100) + log(2!) + $\Sum_{j=1}^{5} (log(5)/j)$ 

Я просто не знаю, как преобразовать последний член уравнения в R код. Я попробовал это:

log(100)+log(factorial(2))+{for(i in 1:5) sum(log(5)/i)}

но я получил numeric(0)

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

В цикле for sum(log(5)/i) ничего не делает, так как это одно число. Например. это будет упаковка от sum до log(5)/i, затем log(5)/2 по отдельности, вместо взятия целых sum.

Одна опция в цикле for - инициировать переменную ('s1') со значением (0) и затем присвоить значение, полученное в каждом цикле, 's1', добавляя его с более ранним значением.

s1 <- 0
for(i in 1:5) s1 <- s1 + log(5)/i

Но его можно векторизовать путем деления log(5) на последовательность строк, чтобы получить vector значений, а затем обернуть с помощью sum

sum(log(5)/seq_len(5))
0 голосов
/ 05 июля 2018

R векторизовано.

Таким образом, вы можете объявить v <- 1:5, затем ссылку log(5) / v или в вашем случае sum(log(5) / v).

И на самом деле вы можете уменьшить все это до sum(log(5) / (1:5))

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