sortedSL=sort(iris$Sepal.Length)
gainsV<-NULL
splitV<-NULL
library(gains)
for(i in 1:NROW(sortedSL))
{
splitVal=sortedSL[i]
iris$new=0
if(sum(iris$Sepal.Length>splitVal)>0)
{
iris[iris$Sepal.Length>splitVal,]$new=1
}
gainsV<-c(gainsV,gains(iris$Sepal.Length, iris$new))
splitV <-c(splitV, splitVal)
}
finalSplitV<-splitV[which.max(gainsV)]
我输入了上面的代码,但看到了此错误消息其中.max(gainsV(的错误:(列表(对象不能被强制为类型"double">
请告知。谢谢
这应该是一个注释,但注释的格式选项太有限,无法在复杂对象上显示str((的结果。你犯了错误,却忽视了我所怀疑的重要警告;
There were 50 or more warnings (use warnings() to see the first 50)
来自这行代码:
gainsV<-c(gainsV,gains(iris$Sepal.Length, iris$new))
查看
str(gainsV)
#============
List of 2265
$ depth : num [1:2] 99 100
$ obs : int [1:2] 149 1
$ cume.obs : int [1:2] 149 150
$ mean.resp : num [1:2] 5.85 4.3
$ cume.mean.resp : num [1:2] 5.85 5.84
$ cume.pct.of.total: num [1:2] 0.995 1
$ lift : num [1:2] 100 74
$ cume.lift : num [1:2] 100 100
$ mean.prediction : num [1:2] 1 0
$ min.prediction : num [1:2] 1 0
$ max.prediction : num [1:2] 1 0
$ conf : chr "none"
$ optimal : logi FALSE
$ num.groups : int 2
$ percents : logi FALSE
$ depth : num [1:2] 97 100
$ obs : int [1:2] 146 4
$ cume.obs : int [1:2] 146 150
$ mean.resp : num [1:2] 5.88 4.38
$ cume.mean.resp : num [1:2] 5.88 5.84
$ cume.pct.of.total: num [1:2] 0.98 1
$ lift : num [1:2] 101 75
$ cume.lift : num [1:2] 101 100
$ mean.prediction : num [1:2] 1 0
$ min.prediction : num [1:2] 1 0
$ max.prediction : num [1:2] 1 0
$ conf : chr "none"
$ optimal : logi FALSE
$ num.groups : int 2
$ percents : logi FALSE
$ depth : num [1:2] 97 100
$ obs : int [1:2] 146 4
$ cume.obs : int [1:2] 146 150
$ mean.resp : num [1:2] 5.88 4.38
#### output at your console would continue for much longer
我怀疑这不是你心目中的结构,但由于没有描述这项工作的目标,我无法确定这一点。