[英]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.