【问题标题】:Why is my levels function returning null for all of my variables?为什么我的级别函数对我的所有变量都返回 null?
【发布时间】: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 &lt;- as.factor(dataset$Species),然后再次尝试 levels(dataset$Species)。字符变量没有级别。如果 Species 是一个字符,则函数 levels 将找不到任何级别并导致 NULL
  • 只要运行data(iris); levels(iris$Species),就会得到预期的结果。您看到的问题可能与 'iris.csv' 中的内容有关。

标签: r


【解决方案1】:

tamtam 的评论有效。我刚刚在colnames(dataset) &lt;- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species") 之后将dataset$Species &lt;- as.factor(dataset$Species) 添加到我的代码中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2019-06-20
    • 2013-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多