df_test2<-data.frame(test1=c("in","out"),
test2=c(1:2))
> df_test2
test1 test2
1 in 1
2 out 2
for (i in df_test2$test1){
for (j in df_test2$test2){
if(i="in"){
print(j+1)
}else{
print(j-1)
}
}
I ran the above code and nothing returned while I was expecting see the outcome being 2 and 1. Mind telling if I am using the wrong loop technique? Many thanks.
>Solution :
I would do it without a for loop
> with(df_test2, ifelse(test1 == "in", test2+1, test2-1))
[1] 2 1
Note that = is an assignment operator equivalent to <- and you want to do a logical comparison, so you should use == instead.
If you want for whatever reasong a for loop, then you can write it using just one index for selecting rows:
for (i in seq_len(nrow(df_test2))){
if(df_test2[i, 1] == "in"){
print(df_test2[i, 2] + 1)
} else {
print(df_test2[i, 2] - 1)
}
}