Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用循环更改变量值_R_Loops - Fatal编程技术网

R 使用循环更改变量值

R 使用循环更改变量值,r,loops,R,Loops,我对R中的循环有问题。我正在尝试更改四个整数值(0-1-2-3)中的变量sexy 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]){ # fo

我对R中的循环有问题。我正在尝试更改四个整数值(0-1-2-3)中的变量
sexy 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 }
}

#为多项式模型创建一个分类性别比的新列

triplets2$multi最可能的问题是,
sex.ratio
列中的值不完全等于0.333333333或0.66667

您可以将数据框中的值四舍五入,如下所示:

# 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 }
}

#为多项式模型创建一个分类性别比的新列

triplets2$multi最可能的问题是,
sex.ratio
列中的值不完全等于0.333333333或0.66667

您可以将数据框中的值四舍五入,如下所示:

# 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 }
}

#为多项式模型创建一个分类性别比的新列

triplets2$multi请发布一些代码,并在标签中包含语言“#在我检查函数表(triplets2$multi)时,为多项式模型triplets2$multi创建一个分类性别比的新列”,r告诉我,我有0->150和3->19。基本上,代码将值0、0.33和0.66分类在一个类别中。为什么不使用
三元组2$multi@DanieleBattocchio:在R中,使用循环几乎从来都不是最好的解决方案。有很多方法可以在更少的时间、更少的代码中获得相同的结果,…我建议您学习函数like
apply
ifelse
而不是
用于
循环。请发布一些代码,并在标记中包含语言“#为多项式模型三元组2$multi创建一个新列分类性别比当我检查函数表(三元组2$multi)时,r告诉我有0->150和3->19。基本上,代码将值0、0.33和0.66分为一个类别。为什么不使用
triplet2呢$multi@DanieleBattocchio:在R中,使用循环几乎从来都不是最好的解决方案。有很多方法可以用更少的时间、更少的代码实现相同的结果。。。我建议您学习
apply
ifelse
等函数,而不是
for
循环。