我有两个不同长度的变量。我想创建一个只计算两个相等值的和的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
谢谢大家!
答案 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或者有一天你会抱歉。