【问题标题】:How to solve 'x' must be numeric in r?如何解决'x'在r中必须是数字?
【发布时间】:2019-04-09 11:45:05
【问题描述】:

我正在尝试制作直方图,但一直遇到错误消息。 这是我的代码

library(readxl)

data <- read_excel("data.xls")

View(data)
attach(data)
names(data)        

hist(data)

这是我的示例。我想创建一个直方图,y 轴为 0-100,x 轴(安全、基本、有限等)数字(39、29、8、12、12)在图中。这有帮助吗?

   Safely  Basic  Limited  Unimproved  Open

   39     29         8          12      12

hist.default(data) 中的错误:“x”必须是数字

我做错了什么?我不明白错误信息。

【问题讨论】:

  • 欢迎来到 StackOverflow!请阅读How to Ask 并可以使用tour,因为您的问题不符合我们的任何准则。另外,您的问题似乎没有付出任何努力,那我们为什么要努力回答?
  • 在您的代码中,data 是一个数据框(或更准确地说,是一个 tbl)。直方图的参数x 需要一个数值向量,但您将数据框传递给hist 函数。您的数据中是否存在要为其创建直方图的特定变量?如果您能提供data 中的数据样本,将会很有帮助。
  • 你的data.frame有多少列?假设您要绘制列1 的直方图。然后做hist(data[[1]])。请do not attach data.
  • 我只有一栏
  • 这些名称(安全、基本、有限等)是否都是数据集中的不同列?您想要哪个变量的直方图?

标签: r histogram numeric


【解决方案1】:

在您的情况下,data 不是变量,而是包含变量的数据框。 您可以像这样获取每个单个变量的直方图:

library(readxl)
data <- read_excel("data.xls")

如果要查看变量Safely的直方图:

hist(data$Safely)

您可以以相同的方式访问data 中包含的每个变量。

【讨论】:

    【解决方案2】:

    问题是您将数据帧传递给hist() 函数,而它的参数x 需要一个向量(请参阅?hist)。根据您编辑的帖子,您会希望:

    hist(as.numeric(data[1,]))
    

    data[1,] 从数据框的第一行创建一个向量。

    虽然看起来您实际上可能正在寻找条形图。在这种情况下,请尝试:

    plot_data <- data.frame(t(data)) %>% 
      tibble::rownames_to_column()
    
    ggplot(plot_data,aes(x = rowname,y=t.data.)) + 
      stat_identity(geom = "bar")
    

    来自@user2554330,一种更简单的基本图形方法:

    f <- as.numeric(data[1,])
    names(f) <- names(data)
    barplot(f)
    

    【讨论】:

    • @user2554330 同意,当您发表评论时,我实际上正在编辑该编辑 - 好点。为了获得标签,我的回答很丑陋,所以如果您对如何清理它有任何想法,请随意。
    • 我不会说流利的gg,但这里有一个基本的图形方式:f &lt;- as.numeric(data[1,]); names(f) &lt;- names(data); barplot(f)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 2023-04-07
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多