r中出错:选择了未定义的列

时间:2017-12-17 22:31:34

标签: r

我试图做分区图,我使用了以下代码:

install.packages('klaR')
library(klaR)
partimat(Type~. , data = training, method = "lda")
partimat('Type'~. , data = training, method = "qda")

R给了我这个错误代码:

Error in `[.data.frame`(m, xvars) : undefined columns selected

我的数据就像这样

Classes ‘tbl_df’, ‘tbl’ and 'data.frame':   178 obs. of  13 variables:
 $ Alcohol             : num  14.2 13.2 13.2 14.4 13.2 ...
 $ Malic acid          : num  1.71 1.78 2.36 1.95 2.59 1.76 1.87 2.15 1.64 1.35 ...
 $ Ash                 : num  2.43 2.14 2.67 2.5 2.87 2.45 2.45 2.61 2.17 2.27 ...
 $ Alcalinity of ash   : num  15.6 11.2 18.6 16.8 21 15.2 14.6 17.6 14 16 ...
 $ Magnesium           : int  127 100 101 113 118 112 96 121 97 98 ...
 $ Total phenols       : num  2.8 2.65 2.8 3.85 2.8 3.27 2.5 2.6 2.8 2.98 ...
 $ Flavanoids          : num  3.06 2.76 3.24 3.49 2.69 3.39 2.52 2.51 2.98 3.15 ...
 $ Nonflavanoid phenols: num  0.28 0.26 0.3 0.24 0.39 0.34 0.3 0.31 0.29 0.22 ...
 $ Proanthocyanins     : num  2.29 1.28 2.81 2.18 1.82 1.97 1.98 1.25 1.98 1.85 ...
 $ Color intensity     : num  5.64 4.38 5.68 7.8 4.32 6.75 5.25 5.05 5.2 7.22 ...
 $ Hue                 : num  1.04 1.05 1.03 0.86 1.04 1.05 1.02 1.06 1.08 1.01 ...
 $ Proline             : int  1065 1050 1185 1480 735 1450 1290 1295 1045 1045 ...
 $ Type                : int  1 1 1 1 1 1 1 1 1 1 ...

请让我知道如何解决它!

2 个答案:

答案 0 :(得分:0)

UCI Machine Learning Wine data set中没有Type个变量。分类变量是class,它是数据集中的第一列。

# data source: UCI ML Repository Wine data
# https://archive.ics.uci.edu/ml/datasets/wine 
library(klaR)
colNames <- c("class","alcohol","malicAcid","ash","acalinityOfAsh",
              "magnesium","totalPhenols","flavanoids","nonflavanoidPhenols",
              "proanthocyanins","colorIntensity","hue","od280.od315OfDilutedWines",
              "proline")
wine <- read.csv("./data/wine.csv",header=FALSE,col.names=colNames)
wine$class <- as.factor(wine$class)
partimat(class ~ alcohol + malicAcid, data=wine, method="lda",plot.matrix=FALSE)

...和输出:

enter image description here

答案 1 :(得分:0)

我有同样的问题,我可以通过更改我的varibles的名称来修复它。在我的数据集中,我有一个变量,其名称在开头有一个空格。程序无法识别它并触发了错误。我删除了那个空格,问题就消失了。