使用以下if-else语句创建变量时遇到问题:
# create data #
df<-as.data.frame(c(10:14))
colnames(df)<-"a"
df$m1<-c(1:5)
df$m2<-c(2,1,4,3,5)
# if-else statement #
if (df$m1 < df$m2) {
df$a2 <- df$a - 1
} else if (df$m1 >= df$m2) {
df$a2 <- df$a
} else {
df$a2 <- 99
}
这会产生以下错误:
Warning message:
In if (df$m1 < df$m2) { :
the condition has length > 1 and only the first element will be used
对所有价值观都如此有效:
df$a2 <- df$a - 1
我的花括号似乎在正确的位置,所以我不明白发生了什么。
解决方案:感谢felixmc的评论
for(i in 1:nrow(df)){
if (df$m1[i] < df$m2[i]) {
df$a2[i] <- df$a[i] - 1
} else if (df$m1[i] >= df$m2[i]) {
df$a2[i] <- df$a[i]
} else {
df$a2[i] <- 99
}
}