【发布时间】:2021-01-06 06:46:30
【问题描述】:
这是我事先运行的代码。
library(ggplot2)
library(caret)
filename <- "iris.csv"
dataset <- read.csv(filename, header = FALSE)
colnames(dataset) <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species")
validation_index <- createDataPartition(dataset$Species, p=0.80sa, list=FALSE)
validation <- dataset[-validation_index,]
dataset <- dataset[validation_index,]
我的问题是为什么当我尝试运行 levels(dataset$Species) 时,我得到的只是 NULL Species 是一个字符变量,我应该得到 3 个结果:Iris-setosa、Iris-versicolor 和 Iris-virginica。该代码在我直接从 R 导入数据集时有效,但在我尝试导入 csv 文件时无效。
【问题讨论】:
-
因素和字符在数据框中看起来非常相似,但也有不同。如果
is.factor(dataset$Species)给你一个 FALSE,你可以将 Species 转为因子dataset$Species <- as.factor(dataset$Species),然后再次尝试levels(dataset$Species)。字符变量没有级别。如果 Species 是一个字符,则函数levels将找不到任何级别并导致NULL。 -
只要运行
data(iris); levels(iris$Species),就会得到预期的结果。您看到的问题可能与'iris.csv'中的内容有关。
标签: r