2016-09-25 3 views
-3

Мне нужно решить сумму сумм (10^2 + 10^3) 99 сумм, поэтому сумма (1100 + 1100 + 1100 ... (99 раз))) = Общее. Я знаю, что большинство людей не любят циклы, но мне нужно решить это, используя цикл for. Вот то, что я до сих пор ...Использование для цикла в r для получения суммарной суммы

prob1 <- function(n){ 
total <- 1100 
for(i in 2:99) 
total[i] <- sum(i^2 + i^3) 
return(total) 
} 

Это то, что я получаю

[1] 1100  12  36  80 150 252 392 576 810 1100 1452 1872 2366 2940 3600 
[16] 4352 5202 6156 7220 8400 9702 11132 12696 14400 16250 18252 20412 22736 25230 27900 
[31] 30752 33792 37026 40460 44100 47952 52022 56316 60840 65600 70602 75852 81356 87120 93150 
[46] 99452 106032 112896 120050 127500 135252 143312 151686 160380 169400 178752 188442 198476 208860 219600 
[61] 230702 242172 254016 266240 278850 291852 305252 319056 333270 347900 362952 378432 394346 410700 427500 
[76] 444752 462462 480636 499280 518400 538002 558092 578676 599760 621350 643452 666072 689216 712890 737100 
[91] 761852 787152 813006 839420 866400 893952 922082 950796 980100 

Как я могу получить его правильно добавлять и возвращать только в общей сложности? Всего должно быть 108 900 (я считаю)

+0

** а. ** Вы получаете то, что вы код просит. Каков желаемый результат? Вы не используете предыдущие условия для получения суммарной суммы, и описание просто звучит как использование одинаковых номеров каждый раз. ** b. ** Зачем нужен цикл 'for'? 'cumsum' и' Reduce' - приятные функции. ** c. ** Если вы используете цикл 'for', предопределите вектор соответствующего размера, или вы получите неприятный штраф за производительность. – alistaire

ответ

1

Я посмотрел на вашу проблему с петлей немного по-другому, так как вам просто нужно было всего. Ваш код добавлял элементы к вектору с общим количеством [i]. Вместо этого вы хотите, чтобы я был итератором для добавления числа к другому номеру. Я инициализировал это до 0 с первой строкой.

total=0 
for (i in 1:99) { 
total<-total+(10^2 + 10^3) 
} 
total 

[1] 108900

1100*99 

[1] 108900

+1

Спасибо! Это сработало ... оно работает без последней строки кода «i = i + 1», потому что я могу объяснить, почему я должен включить это? –

+0

Вы правы. Это не нужно. Это делает цикл. Извините за путаницу. Я отредактирую свой пост. – akaDrHouse

+1

Не беспокойтесь, я просто хотел понять. Спасибо за ваше время, я ценю помощь! –