你在使用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