我在R中遇到循环问题。我试图在四个整数值(0-1-2-3)中更改变量sex ratio
的值。原始变量sex ratio
具有:
0-> 13; 0.33->58; 0.66->0.66; 1->19
# create a new column classifying sex ratio for multinomial model
triplets2$multi <- rep(0, dim(triplets2)[1])
for (r in 1:dim(triplets2)[1]){ # for each row of dataframe
if(triplets2$sex.ratio[r]==0){ triplets2$multi[r]<-0 }
if(triplets2$sex.ratio[r]==0.333333333333333){ triplets2$multi[r]<-1 }
if(triplets2$sex.ratio[r]==0.666666666666667){ triplets2$multi[r]<-2 }
if(triplets2$sex.ratio[r]==1){ triplets2$multi[r]<-3 }
}
但是当我去检查代码是否正常工作时,存在分类问题。 有什么想法吗?
答案 0 :(得分:0)
问题很可能是sex.ratio
列中的值不完全等于0.333333333333333或0.666666666666667。
您可以像这样对数据框中的值进行舍入:
# create a new column classifying sex ratio for multinomial model
triplets2$multi <- rep(0, dim(triplets2)[1])
for (r in 1:dim(triplets2)[1]){ # for each row of dataframe
if(triplets2$sex.ratio[r]==0){ triplets2$multi[r]<-0 }
if(round(triplets2$sex.ratio[r],2)==0.33){ triplets2$multi[r]<-1 }
if(round(triplets2$sex.ratio[r],2)==0.67){ triplets2$multi[r]<-2 }
if(triplets2$sex.ratio[r]==1){ triplets2$multi[r]<-3 }
}
然后它应该工作。
仅供参考,您应该查看ifelse
这样的操作,而不是使用循环。