用于具有不等变量的循环

时间:2011-08-09 10:34:27

标签: r variables for-loop if-statement

我有两个不同长度的变量。我想创建一个只计算两个相等值的和的for循环。如果值彼此不相等,则必须使用+1更新变量b。有没有办法创造这个?我想做这样的事情:

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 个答案:

答案 0 :(得分: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          
}    
} 

答案 1 :(得分: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

答案 2 :(得分:0)

我认为您需要更清楚地定义您期望的内容。如果你想要的只是将'a'中出现的'a'值加倍(因为将两个相等的东西相加是其中之一), 那么你需要的只是     杜省&LT;维矢量()

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或者有一天你会抱歉。