|
之前通过查找以了解if-else 与ifelse的区别,前者不能处理向量,后者使用更为紧凑。但是在实际使用中发现除了问题,请各位指点!
示例代码如下:
###############################
#对一组数据进行区间判断,划分区间如
#7.5-6-5-3-2,对应类别为1,2,3,4,5,6
###########################
data<-c( "8.772500","12.261250","10.67")
do_sort<-vector(mode="numeric",length=3)
###################################
#使用if-else的判断
for(j in 1:3)
{
if(data[j]>="7.5"){
do_sort[j]= "1"
}else if (data[j]>="6" && data[j]<"7.5"){
do_sort[j]="2"
} else if (data[j]>="5" && data[j]<"6"){
do_sort[j]="3"
} else if (data[j]>= "3" && data[j]<"5"){
do_sort[j]="4"
} else if (data[j]>="2" && data[j] <"3"){
do_sort[j]="5"
} else if (data[j] <"2"){
do_sort[j]="6"
}
}
do_sort[1:3]#结果为1,6,6
############################
#另一种学习的方法
##############
do_sort[data[j]>="7.5"]<-1
do_sort[data[j]>="6" && data[j]<"7.5"]<-2
do_sort[data[j]>="5" && data[j]<"6"]<-3
do_sort[data[j]>= "3" && data[j]<"5"]<-4
do_sort[data[j]>="2" && data[j] <"3"]<-5
do_sort[data[j] <"2"]<-6
do_sort[1:3]#结果为6,6,6,
############################
#使用ifelse的实例
#####################
for(j in 1:3)
{
do_sort[j]<-ifelse(data[j]>="7.5",1,
ifelse(data[j]>="6" && data[j]<"7.5",2,
ifelse(data[j]>="5" && data[j]<"6",3,
ifelse(data[j]>= "3" && data[j]<"5",4,
ifelse(data[j]>="2" && data[j] <"3",5,6
)))))
}
do_sort[1:3]#结果为1,6,6
#################################
正确分类结果应都为1
不知道是哪里问题~~
|
|