2015-01-23 4 views
0

저는 R에 익숙하지 만 자바에 대한 경험이 있습니다. 자바에서 나는에 대한-for 루프 - 루프 다른에서와 코드에 사용하지만, 나는 이것이 내가위한 루프 두 번째를 통해 진행할 수 for-loop에서 for 루프를 사용하는 방법 R

p <- 11 
diags <- list(rep(0.30, p), rep(0.45, p), rep(0.25, p)) 
Matrix <- as.matrix(bandSparse(p, k = -c(-1:1), diag = c(diags), symm=FALSE)) 
Matrix[1,1] <- 0.70 
Matrix[11,11] <- 0.75 

vector <- rep(0, 11) 
vector[5] <- 1 
vector 

for(i in 1:240){ 
    e <- vector %*% (Matrix %^% i) 
    for(j in 2:24){ 
     cumulativeSum <- cumulativeSum + e[j] 
    } 
} 

R.

에서 동일한 방식으로 작동하지 않는 것으로 나타났습니다 첫 번째 for-loop에서 수행되는 모든 행렬 곱셈에 대해 나는 내가 바라는 결과없이 여러 가지를 시도해 본 사람이 나를 도와 줄 수 있기를 바랍니다.

+0

여기서 'cumulativeSum'은 어디에서 초기화합니까? 또한 R은 Java와 다릅니다. R 레벨 루프는 일반적으로 무언가를 달성하는 가장 효율적인 방법입니다. 대신 벡터화 된 함수, 즉 C 레벨 루프가 바람직합니다. – Roland

+0

cumulativeSum 초기화를 게시하지 않아서 죄송합니다. 내 코드에서 그것은 0으로 설정됩니다 : cumulativeSum <- 0 – Pirlo

+1

원하는 결과는 무엇입니까? 오류가 무엇입니까? 잘못되었다는 것을 어떻게 압니까? 등등. [여기] (http://stackoverflow.com/help/how-to-ask)를 참조하십시오. –

답변

2

우선, 이해할 수있는 한, e은 1x11 매트릭스이므로 인덱스 2시 24 분의 루핑은 이상합니다.

두 번째로 숫자의 단일 행이기 때문에 sum()이 작동하므로 루프 할 필요가 없습니다.

for(i in 1:240){ 
    e <- vector %*% (Matrix %^% i) 
    cumulativeSum <- cumulativeSum + sum(e) 
} 
관련 문제