【问题标题】:What does the rpart "Error in as.character(x) : cannot coerce type 'builtin' to vector of type 'character' " message mean?rpart“as.character(x) 中的错误:无法将'builtin'类型强制转换为'character'类型的向量”消息是什么意思?
【发布时间】:2011-01-21 04:13:20
【问题描述】:

几天来,我一直在与rpart 争吵(试图为我拥有的这个数据集制作分类树),我认为现在是时候询问生命线了 :-) 我'我确定这是我没有看到的愚蠢的东西,但这是我一直在做的事情:

EuropeWater <- read.csv(file=paste("/Users/artessaniccola/Documents/",
                       "Magic Briefcase/CityTypology/Europe_water.csv",sep=""))
library(rpart)
attach(EuropeWater)
names(EuropeWater)
[1] "City"          "waterpercapita_m3" "water_class"       "population"       
[5] "GDPpercapita"  "area_km2"          "populationdensity" "climate"            
EuropeWater$water_class <- factor(EuropeWater$water_class, levels=1:3, 
                                  labels=c("Low", "Medium", "High"))
EuropeWater$climate <- factor(EuropeWater$climate, levels=2:4, 
                              labels=c("Arid", "Warm temperate", "Snow"))
EuropeWater_tree <- rpart(EuropeWater$water_class ~ 
               population+GDPpercapita + area_km2 + populationdensity + 
               EuropeWater$climate, 
               data=EuropeWater, method=class)   
Error in as.character(x) : 
          cannot coerce type 'builtin' to vector of type 'character'

对于我的一生,我无法弄清楚错误是关于什么的。

【问题讨论】:

  • 如果您提供示例数据集,您可能会得到更快的响应。如果有意义的话,您可能想从 datasets 包中取出一些东西。
  • Shane 非常正确:如果您的更复杂的练习失败,请从更简单的练习开始,例如example(rpart) 做了什么并从那里开始。

标签: r rpart cart-analysis


【解决方案1】:

这行得通吗?

EuropeWater_tree <- rpart(EuropeWater$water_class ~ 
 population+GDPpercapita + area_km2 + populationdensity + EuropeWater$climate, 
 data=EuropeWater, method="class")

我认为你应该引用方法类型。

当您使用class 而不是"class" 时,R 会尝试自己转换为字符:

as.character(class)
Error in as.character(class) : 
    cannot coerce type 'builtin' to vector of type 'character'

因为class 是一个类型为buildin 的函数:

typeof(class)
[1] "builtin"

【讨论】:

  • 好收获!我也会修改我的回复。
【解决方案2】:

我将从修正公式开始:删除多余的 EuropeWater,因为您已经提供了 data= 参数:

res <- rpart(water_class ~ population + GDPpercapita + area_km2 + 
                           populationdensity + climate, 
             data=EuropeWater, method="class")

另外,请确保您的data.frame 的所有列都属于适当的类型。也许从 csv 文件中读取的某些数据被错误地读取为一个因素?快速summary(EuropeWater) 可能会揭示这一点。

【讨论】:

  • 我认为str 可以更好地快速查看“data.frame”内容
  • 当然,或者sapply(EuropeWater, class) 逐列获取——有很多选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 2015-04-29
  • 2016-11-21
  • 1970-01-01
相关资源
最近更新 更多