R语言运行waterfall包报错:object 'subtotal' not found,求解决方法
问题原因与解决办法
这个报错的核心原因很直接:你在waterfallchart的groups参数里指定了subtotal,但这个变量既没有定义在全局环境中,也不存在于rasiel数据集里。
我们可以先查看rasiel数据集的结构确认这一点:
str(rasiel)
输出结果会显示这个数据集只有两列:
'data.frame': 7 obs. of 2 variables: $ label: chr "Sales" "Returns" "COGS" "Operating Expenses" ... $ value: num 100 -10 -50 -20 10 -5 15
确实没有名为subtotal的列,所以R找不到这个对象就会报错。
下面提供两种针对性的解决办法,你可以根据需求选择:
方案1:不需要分组时,移除groups参数
如果你只是想生成基础的瀑布图,不需要按类别分组展示小计,直接删掉groups=subtotal这部分即可:
library(latticeExtra) library(waterfall) data(rasiel) # 加载示例数据集 asTheEconomist( waterfallchart(value~label, data=rasiel, main="P&L") )
这段代码会正常生成符合The Economist风格的瀑布图。
方案2:需要分组时,手动创建subtotal列
如果你的需求是对不同类别进行分组并展示组内小计,那就需要先在rasiel数据集中添加subtotal列,用来定义每个类别所属的分组。比如我们可以按"收入""成本""其他""净利润"来分组:
library(latticeExtra) library(waterfall) data(rasiel) # 为每个label分配分组 rasiel$subtotal <- c("Revenue", "Revenue", "Costs", "Costs", "Other", "Other", "Net Profit") asTheEconomist( waterfallchart(value~label, data=rasiel, groups=subtotal, main="P&L") )
此时groups参数就能找到rasiel里的subtotal列,瀑布图会按照你定义的分组来展示小计效果。
额外补充:waterfallchart的groups参数要求传入数据集中已存在的列名,用来对数据分组并自动计算组内汇总,所以使用前一定要确保这个列存在哦。
内容的提问来源于stack exchange,提问作者ah bon
相关产品推荐
相关产品推荐

