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)]
我输入上面的代码,但看到此错误消息 其中which.max(gainsV)的错误: (列表)对象不能强制输入“ double”
请告知。谢谢。
答案 0 :(得分:0)
这应该是注释,但是注释的格式设置太受限制,无法在复杂对象上显示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
我怀疑这不是您想到的结构,但是由于这项工作的目标并未描述,因此我无法确定地知道这一点。