如何修复错误:`data`必须是一个数据框架或其他可由`fortify()`强制执行的对象而不是一个数字向量

6,061 阅读1分钟

你在R中可能遇到的一个错误是。

Error: `data` must be a data frame, or other object coercible by `fortify()`,
        not a numeric vector

当你试图使用ggplot2来绘制数据框架中的变量时,这个错误就会发生,但你引用的数据参数是一个向量而不是一个数据框架。

本教程确切地分享了如何修复这个错误。

如何重现该错误

假设我们在R中拥有以下数据框:

#create data frame
df <- data.frame(x=c(1, 2, 3, 4, 5, 6, 7, 8),
                 y=c(4, 8, 14, 19, 14, 13, 9, 9))

#view data frame
df

  x  y
1 1  4
2 2  8
3 3 14
4 4 19
5 5 14
6 6 13
7 7  9
8 8  9

现在假设我们试图创建一个散点图,以可视化数据框架中的x和y变量:

library(ggplot2)

#attempt to create scatter plot
ggplot(df$x, aes(x=x, y=y)) +
    geom_point()

Error: `data` must be a data frame, or other object coercible by `fortify()`,
        not a numeric vector

我们收到了一个错误,因为我们在ggplot()函数的数据参数中引用了一个数字向量(df$x),而不是一个数据框架。

如何修复该错误

解决这个错误的方法是在ggplot()函数的数据参数中引用一个数据框架。

在我们的例子中,我们应该使用df,而不是df$x作为数据参数。

library(ggplot2)

#create scatter plot
ggplot(df, aes(x=x, y=y)) +
    geom_point()

注意,这次我们能够成功地创建散点图,没有任何错误。

其他资源

下面的教程解释了如何解决R中的其他常见错误。

如何修复:ggplot2不知道如何处理uneval类的数据
如何修复:stripchart.default(x1,...)中的错误:无效的绘图方法
如何修复:eval(predvars, data, env)中的错误:未找到对象'x'