使用循环更改变量值

时间:2015-12-02 11:54:51

标签: r loops

我在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 }
}

但是当我去检查代码是否正常工作时,存在分类问题。 有什么想法吗?

1 个答案:

答案 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这样的操作,而不是使用循环。