繁体   English   中英

R中的硬卡错误:可变长度不同

[英]Hardstuck error in R: variable lengths differ

我正在尝试完成An Introduction to Statistical Learning with Applications in R 的第 371 页中的练习 7,我需要训练一个 SVM 分类器来预测给定汽车的里程是高于还是低于平均值。 数据在数据框 Auto 中,没有 NA、不同的长度或其他明显麻烦的特征(它有一列存储为因子的字符串,但我已经处理过了)。

我使用以下代码执行此操作

library("ISLR")
library("e1071")
set.seed(1)
m=dim(Auto)[1]
train=sample(1:m, ceiling(m/2), replace = FALSE)
train=sort(train)
med=median(Auto$mpg)
above_median=as.numeric(Auto$mpg[train]>=med)

length(above_median)
dim(Auto[train, -c(1,9)])

tune.out<-tune(svm, above_median ~ ., data=Auto[train,-c(1,9)], kernel="linear", 
          ranges=data.frame(cost=c(0.01, 0.03, 0.1, 0.3, 1, 3)), scale = FALSE)

返回

Error in model.frame.default(formula, data) : 
  variable lengths differ (found for 'cylinders')

这显然不是这样,因为我已经检查过所有相关长度都是 196。另外,我已经检查过数据中没有 NA。

如果你以这种方式运行它,它就可以工作。

tmp <- Auto
tmp$above_median <- above_median
tune.out <- tune(svm, above_median ~ ., data=tmp[train,-c(1,9)], kernel = "linear", 
                 ranges = data.frame(cost=c(0.01, 0.03, 0.1, 0.3, 1, 3)), scale = FALSE)

我想这是寻找above_median内部数据框提供的,它没有找到它,所以Y的长度为0。因此,第一列不具有相同的长度。

PS:我创建tmp为了不更改原始数据框。 考虑到您的练习是一种练习,我认为这无关紧要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM