我有这个示例数据
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
}
}
问题在于此循环之后
length(list)=9
我发现这是因为最后的NULL。任何建议如何重写循环以显示最后的输出,即使它是NULL?
答案 0 :(得分:1)
这应该有效:
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
:
ifelse(df$mycol=="YES",list("YES"),ifelse(df$mycol=="NO",list(NULL),NA))
有相关帖子有一个很好的解释:Assigning NULL to a list element in R?