2016-09-25 2 views
-3

총 누적 횟수를 (10^2 + 10^3)으로 풀어야하므로 1100 + 1100 + 1100 ... (99 회)) = 합계. 나는 대부분의 사람들이 루프를 좋아하지 않는다는 것을 알고 있지만 for 루프를 사용하여 이것을 해결해야한다. 여기for 루프를 사용하여 누적 합계

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

전체를 원했기 때문에 루프 문제를 조금 다르게 보았습니다. 귀하의 코드는 total [i]가있는 요소를 벡터에 추가하고 있습니다. 대신에 다른 번호에 숫자를 추가하는 반복자가되고 싶습니다. 첫 번째 줄을 0으로 초기화했습니다.

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

[1] 108,900

1100*99 

[1] 108,900

+1

감사합니다. 그게 효과가 ... 왜 내가 이것을 포함해야하는지 설명 할 수있는 나의 이해를위한 'i = i + 1'코드의 마지막 줄없이 작동합니까? –

+0

정확합니다. 필요하지 않습니다. 루프가 그렇게합니다. 혼란을 드려 죄송합니다. 내 게시물을 수정합니다. – akaDrHouse

+1

걱정하지 마라, 나는 단지 이해하고 싶었다. 시간 내 주셔서 감사합니다, 도와 주셔서 감사합니다! –