2011-08-09 4 views
0

다양한 길이의 변수가 2 개 있습니다. 두 개의 동일한 값에 대한 합계 만 계산하는 for 루프를 생성하려고합니다. 값이 서로 같지 않으면 변수 b를 +1로 업데이트해야합니다. 이 방법을 만들 수 있습니까? 나는 이런 것을 thougth :변수가 다른 루프의 경우

a <- c(1,2,3,4,5) 
b<- c(1,7,2,3,6,4,5) 

j <- 1 
test<- matrix() 
for(i in 1:length(a)) { 
if(a[i] == b[j]){ 
result <- a[i] + b[j] 
test[[i]]<-matrix(result) 
j <- j + 1} 
else { 
j <- j +1 
} 

1 + 1 = TRUE 
2 + 7 + FALSE +1 
2 + 2 = TRUE 
3 + 3 = TRUE 
4 + 6 = FALSE +1 
4 + 4 = TRUE 
5 + 5 = TRUE 

모두에게 감사합니다!

+0

나는 정말로 그것을 얻지 못합니다. 그 데이터를 가지고 모든 a가 b에 포함되어 있다는 사실을 감안할 때 왜 'a * 2'를하지 않는 것이 좋을까요? –

+0

@ Joris, 이건 내 실제 데이터의 간단한 버전입니다. 실제 루프에서는 sum 메서드를 사용하지 않습니다! – Lisann

+0

이렇게 생각했습니다. 그러나 당신은 당신의 질문에 그것을 명시해야합니다. 그 옆에, 받아 들여진 대답에 대한 나의 코멘트에주의를 기울이십시오. 허용 된 대답은 경우에 따라 잘못된 해결책을 줄 수 있습니다. 또한 a에 반복되는 값이 들어있을 경우 응답에 주어진 코드는 버그가 있습니다. –

답변

1

이 변수에 대한 올바른 해결책이라고 생각합니다. 유일한 요구 사항은 변수 a의 모든 값이 변수 b에서 처리해야한다는 것입니다.

a <- c(1,2,3,4,5) 
b<- c(1,7,2,3,6,4,5) 

match(a,b) 

test <- matrix() 
for(i in 1:length(a)){  
if (a[i] == b[i]) {   
result <- a[i] + b[i]   
test[i]<- result   
} 
else { 
c<- which(b == a[i]) 
result <- a[i] + b[c]   
test[i]<- result   
}  
} 
0

무엇을 하려는지 완전히 모르지만 어떻게 작동합니까?

a <- c(1,2,3,4,5) 
b<- c(1,7,2,3,6,4,5) 

test<- matrix() 
    for(i in 1:length(a)) { 
    for (j in 1:length(b)){ 
     if (a[i] == b[j]) { 
     result <- a[i] + b[j] 
     test[i]<- result 
     break() 
     } 
    } 
    } 

> test 
[1] 2 4 6 8 10 
+0

'test <- numeric (length (a)) '를 사용하십시오. 길이를 미리 정의하면 속도가 훨씬 빨라집니다. –

+0

이것은'a <- c (1,2,3,5,4); b <- c (1,2,3,4,5)'이다. 결과는 2,4,6,10,8이 아니라 2,4,6,10이되어야합니다. 'break()'전에 행렬()과'x <-j'를 테스트하기 전에'x <-1'를 추가하십시오. '1 : length (b)'대신에'for (j in x : length (b))' –

0

나는 당신이 훨씬 더 명확하게 기대하는 것을 정의 할 필요가 있다고 생각한다. 당신이 원하는 모든이 'B'에 나타나는 'A'의 값을 두 배로하는 경우 모두 당신이 필요 두 주 < - 벡터()

j=1 

for (i in 1:length(a)){ 

if (length(which(a[i]==b)) >0) {doubs[j]=2*a[i];j<-j+1} 

} 
입니다 다음, (동일한 두 가지를 합산 이후 두 번 그 중 하나입니다)

하지만 첫 번째 경기 또는 모든 경기 만 저장 하시겠습니까? 예. a = 1 및 b = c (1,2,1,3,1). 그리고 "=="또는 is.equal을 읽어야합니다. 그렇지 않으면 언젠가 미안합니다.

관련 문제