You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ggstatsplot报行数不一致错误,但数据实际行数相同的问题咨询

问题描述

我有一个数据框:

data <- structure(list(day = structure(c(1L, 2L, 3L, 1L, 2L, 3L, 4L, 
4L), levels = c("6", "10", "13", "26"), class = "factor"), measurement = c(114.243333333333, 
114.473333333333, 115.276666666667, 114.243333333333, 114.51, 
115.3, 115.476666666667, 115.56)), class = "data.frame", row.names = c(NA, 
-8L))

当我尝试用ggstatsplot绘图:

library(ggstatsplot)
ggbetweenstats(data = data,
              x = day, y = measurement)

出现如下错误:

Error in data.frame(..., check.names = FALSE) : 
  arguments imply differing number of rows: 0, 1

但实际上两个列的长度是相同的:

> length(data$day)
[1] 8
> length(data$measurement)
[1] 8

请问这是什么原因?


问题原因与解决办法

这个报错的核心原因是每个分组的样本量太小(你的数据里每个day水平仅2个观测值),导致ggbetweenstats默认执行的参数统计检验(如单因素方差分析)无法计算出有效结果,进而在整合统计结果与绘图数据时出现行数不匹配的问题。

有两种可行的解决方式:

  • 方法一:跳过统计检验,仅绘制可视化图形
    修改代码关闭统计结果的计算与展示模块:
    library(ggstatsplot)
    ggbetweenstats(data = data,
                  x = day, 
                  y = measurement,
                  bf.message = FALSE,
                  results.subtitle = FALSE)
    
  • 方法二:改用适配小样本的非参数检验
    指定使用克鲁斯卡尔-沃利斯非参数检验,适配小样本场景:
    library(ggstatsplot)
    ggbetweenstats(data = data,
                  x = day, 
                  y = measurement,
                  type = "nonparametric")
    

另外,也可以尝试更新ggstatsplot到最新版本,新版本对小样本的兼容性有所优化:

install.packages("ggstatsplot")

内容的提问来源于stack exchange,提问作者Mike

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 09:31:30