如何强制列表对象键入“整数”,R中的错误

时间:2019-02-20 04:02:05

标签: r data-science

我是使用R进行数据挖掘和机器学习的新手。当我研究朴素贝叶斯分类时,我遇到此错误:

  

“其中((sapply(newdata [ind_factor],nlevels)!= sapply(tables [ind_factor],     (列表)对象不能强制输入“整数””

这是我的代码:

data <- read.csv(file.choose(),header = T) 
str(data)
set.seed(1234)
splitData <- sample(2,nrow(data),replace = T,prob = c(0.8,0.2))
train<-data[splitData == 1,]
test <- data[splitData == 2,]
mdl <- naive_bayes(admit ~ .,data = train)
predicted <- predict(mdl, train, type = 'prob')

当我运行最后一行时,它会在上面抛出错误消息。谁能帮我! 非常感谢。

1 个答案:

答案 0 :(得分:2)

您的自变量之一似乎是字符串或因子变量,并且都需要为数字。请在下面查看我的玩具数据集。当包含所有变量时,我会得到相同的错误;但是,当我取出var4(其中变量是字符串)时,它可以工作。

如果要使用该变量,可以将字符串变量转换为一个因子,然后将其转换为一个数字变量(它将捕获该因子的基础值)。

// check that values array is ready from api get request
if(values) {
   values.filter((val) => {
      // check if val has a first name - if error there is your reason
      if(val.FirstName) {
         return val.FirstName.includes('X');
      }

   });
}