For 循环 - 如果输出为 NULL,则缺少最后一步
For loop - missing last step if the output is NULL
我有这个示例数据
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?
这应该有效:
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))
有个相关的post解释的很好:Assigning NULL to a list element in R?
我有这个示例数据
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?
这应该有效:
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))
有个相关的post解释的很好:Assigning NULL to a list element in R?