如何在R中修复:错误`mapping`必须由`aes()`创建

3,478 阅读2分钟

你在使用R时可能遇到的一个错误是:

Error: `mapping` must be created by `aes()`

当你试图在ggplot2中创建绘图时使用**ae()**参数,并且在不正确的地方使用它,或者在没有 "映射 "语法的情况下使用它时,就会发生这个错误。

下面的例子展示了如何在实践中解决这个错误。

如何重现该错误

假设我们试图用ggplot2创建一个boxplot。

library(ggplot2)

#create data
df <- data.frame(y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28),
                 x1=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 x2=c(8, 7, 7, 6, 6, 4, 3, 5, 4, 6, 5, 4, 3, 2, 2))

#attempt to create boxplot for 'x1' variable
ggplot() +
  geom_boxplot(df, aes(x=x1))

Error: `mapping` must be created by `aes()`

我们收到了一个错误,因为在**geom_boxplot()函数中使用了ais()**参数而没有使用'mapping'语法。

如何修复该错误

有两种方法来解决这个错误:

方法1:使用'mapping'语法

解决这个错误的方法之一是在**ais()**参数前面特别使用'mapping'语法。

library(ggplot2)

#create data
df <- data.frame(y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28),
                 x1=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 x2=c(8, 7, 7, 6, 6, 4, 3, 5, 4, 6, 5, 4, 3, 2, 2))

#create boxplot for 'x1' variable
ggplot() +
  geom_boxplot(df, mapping=aes(x=x1))

由于我们明确地使用了映射语法,所以我们避免了任何错误。

方法2:在ggplot函数中使用'aes'

解决这个错误的另一个方法是在ggplot()函数中使用aes()参数:

library(ggplot2)

#create data
df <- data.frame(y=c(2, 3, 3, 4, 5, 5, 6, 7, 8, 8, 9, 10, 16, 19, 28),
                 x1=c(1, 2, 2, 3, 5, 6, 8, 8, 9, 9, 10, 11, 12, 15, 15),
                 x2=c(8, 7, 7, 6, 6, 4, 3, 5, 4, 6, 5, 4, 3, 2, 2))

#create boxplot for 'x1' variable
ggplot(df, aes(x=x1)) +
  geom_boxplot()

由于我们在ggplot()函数中使用了aes()参数,所以我们能够成功地创建boxplot并避免任何错误。

其他资源

下面的教程解释了如何修复R中的其他常见错误:

如何在R中修复: plot.new尚未被调用
如何在R中修复:ExtractVars中的无效模型公式
如何在R中修复:replacement的长度为0