для цикла с неравными переменными - PullRequest
0 голосов
/ 09 августа 2011

У меня есть 2 переменные различной длины. Я хочу создать цикл for, который рассчитывает сумму только для двух равных значений. Если значения не равны друг другу, переменная b должна быть обновлена ​​с +1. Есть ли способ создать это? Я думаю примерно так:

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

Спасибо всем!

Ответы [ 3 ]

1 голос
/ 11 августа 2011

Я думаю, что это правильное решение для этих переменных.Единственное требование заключается в том, что все значения из переменной необходимо указывать в переменной 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 голосов
/ 09 августа 2011

Я думаю, вам нужно более четко определить, что вы ожидаете.Если все, что вам нужно, - это удвоить значения «a», которые появляются в «b» (поскольку суммирование двух равных вещей равно удвоению одного из них), тогда все, что вам нужно, это doubs <-vector () </p>

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, или вы однажды пожалеете.

0 голосов
/ 09 августа 2011

Не совсем уверен, что вы пытаетесь сделать, но как это работает?

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...