编写R ggplot绘图函数时出现aes映射相关报错该如何修复
问题修复方案
报错原因
- 核心错误是
ggplot()参数传递逻辑冲突:你使用%>%管道符将filter()筛选后的三个国家的子数据集传递给ggplot()时,管道默认会把前一步的输出作为后一步函数的第一个参数,你额外在ggplot()的第一个参数位传入了完整的原始数据集allcountries_df,导致原本应该放aes()映射规则的第二个参数位被占用,程序无法识别到合法的映射配置,因此抛出对应报错。 - 额外检查:你粘贴的代码中管道符写为
%>,缺失了末尾的%,完整的管道运算符应为%>%,如果实际代码中也有这个问题需要同步修正。
修复后代码
graph3countries <- function(country1, country2, country3) { allcountries_df %>% filter(`Country Name` %in% c(country1,country2,country3)) %>% ggplot(aes(x=year, y=dollars, group = `Country Name`, color=`Country Name`)) + geom_line() + scale_y_log10() }
验证调用
你原来的两种调用方式都可以正常运行:
# 位置参数调用 graph3countries("France", "Spain", "Italy") # 显式指定参数名调用 graph3countries(country1="France", country2="Spain", country3="Italy")
内容的提问来源于stack exchange,提问作者0427092
相关产品推荐
相关产品推荐

