R语言split配合boxplot绘分组箱线图报'x' must be atomic错误
报错原因
- 核心问题出在
split()的输入参数传错了:你给split的x参数传了整个InsectSprays数据框,这种情况下split返回的是按spray分组的子数据框列表,每个列表元素是包含count、spray两列的完整数据框,不是一维的数值向量。 boxplot()支持列表格式输入,但要求列表里的每个元素必须是原子型向量(也就是可以直接做排序、统计计算的一维数值结构),数据框属于递归型对象,不满足这个要求。- 后续
boxplot内部调用sort.int()计算分位数、排序时,无法处理数据框类型的输入,就触发了'x' must be atomic的报错。
修正方法
两种常用写法都可以正常出图:
- 拆分时只传入需要绘图的count列,不要传整个数据框:
boxplot(split(x = InsectSprays$count, f = InsectSprays$spray))
- 用公式语法更简洁,不需要手动调用
split:
boxplot(count ~ spray, data = InsectSprays)
内容的提问来源于stack exchange,提问作者Bert Onstott
相关产品推荐
相关产品推荐

