For循环-如果输出为空,则缺少最后一步

For循环-如果输出为空,则缺少最后一步,r,for-loop,R,For Loop,我有这个示例数据 df<-data.frame(col=c(rep("YES",9),"NO")) list<-list() for(i in 1:10){ if(df[i,1]=="YES"){ list[[i]]<-"YES" } if(df[i,1]=="NO"){ list[[i]]<-NULL } } 我发现这是因为最后的空值。有没有建议如何重写循环以显示最后的输出,即使它为空?这应该可以: df<-data.frame(

我有这个示例数据

df<-data.frame(col=c(rep("YES",9),"NO"))
list<-list()
for(i in 1:10){
  if(df[i,1]=="YES"){
    list[[i]]<-"YES"
  }
  if(df[i,1]=="NO"){
    list[[i]]<-NULL
  }
}
我发现这是因为最后的空值。有没有建议如何重写循环以显示最后的输出,即使它为空?

这应该可以:

df<-data.frame(mycol=c(rep("YES",9),"NO"))

mylist<-list()
for(i in 1:10){
  if(df[i,1]=="YES") mylist[i] <- "YES"
  if(df[i,1]=="NO") mylist[i] <- list(NULL)
}

有一篇相关的帖子有很好的解释:

你确定要
NULL
,而不是
NA
?也许,
ifelse(df$col==“YES”,“YES”,NA)
YES,我肯定。由于原始数据的性质,我需要NULL。我需要for循环不错过最后一步并显示空值..我用一些“字符”代替空值来修复它,但我仍然感兴趣为什么它不起作用我无法想象一个场景,在这个场景中,您的列表比等效的逻辑向量df[[I]]==“YES”谢谢,它并不像我希望的那样清晰(mylist[[10]]是列表中的列表),但我可以处理它。
df<-data.frame(mycol=c(rep("YES",9),"NO"))

mylist<-list()
for(i in 1:10){
  if(df[i,1]=="YES") mylist[i] <- "YES"
  if(df[i,1]=="NO") mylist[i] <- list(NULL)
}
ifelse(df$mycol=="YES",list("YES"),ifelse(df$mycol=="NO",list(NULL),NA))