簡體   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