带有逻辑和布尔运算符的循环的r if-else

带有逻辑和布尔运算符的循环的r if-else,r,if-statement,R,If Statement,我试图使用if-else语句在我的数据帧中创建一列新的二进制数据,但是我得到的是全零 命令: for(i in 1:nrow(asort)){ if(asort$recip==0 && asort$dist<.74){ asort$temp[i]<-0 } else{ asort$temp[i]<-1 } } #temp ends up being all 0's for(i in 1:nrow(asort)){ 如果(asort

我试图使用if-else语句在我的数据帧中创建一列新的二进制数据,但是我得到的是全零

命令:

for(i in 1:nrow(asort)){
  if(asort$recip==0 && asort$dist<.74){
    asort$temp[i]<-0
  } else{
    asort$temp[i]<-1
  }
}

#temp ends up being all 0's
for(i in 1:nrow(asort)){

如果(asort$recip==0&&asort$dist使用
df
data.frame

dist <- runif(10, 0.3, 2)
recip<- c(0,1,1,0,1,0,1,0,0,1)
df <- data.frame(dist, recip)

您需要将计数器添加到布尔检查。例如,
asort$recip
应该是
asort$recip[i]
。我希望它能像那样简单-谢谢!将来,您应该提供一个可复制的示例。
dist <- runif(10, 0.3, 2)
recip<- c(0,1,1,0,1,0,1,0,0,1)
df <- data.frame(dist, recip)
df$temp<-ifelse(df$dist < 0.74 & df$recip == 0 , 0, 
                ifelse(df$dist > 1.85 & df$recip == 0, 0, 1))

> head(df)
#       dist recip temp
#1 1.1878002     0    1
#2 0.4147835     1    1
#3 1.3707311     1    1
#4 0.9008034     0    1
#5 1.0220149     1    1
#6 1.9384069     0    0