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

R中编写生成统计摘要段落的函数遇到报错该如何解决

R统计摘要函数报错解决方案

剩余报错原因及修复方法

  • 报错1:Error in print.default("The mean is, ", mean(x)) : invalid printing digits -15
    原因是错误调用了print函数:print的第二个参数为控制输出位数的digits,你直接将mean(x)的计算结果作为第二个参数传入,R将-15.66判定为非法的位数参数导致报错。
    修复:不需要用print拼接内容,直接用cat、paste0函数做字符串拼接即可。

  • 报错2:Error: unexpected string constant in: " ".\n\n""
    原因是cat函数的拼接参数之间缺少逗号分隔:你在skew(v)对应的语句结束后没有加逗号,直接换行写了后续的".\n\n"字符串,R无法识别无分隔符的连续字符串常量。另外你拆分了长字符串到不同行,也会触发语法问题。
    修复:cat内所有要拼接的元素之间都加逗号分隔,单个字符串不要拆分成多行书写。


优化后的完整可用代码

首先提前安装加载偏度峰度依赖包:

install.packages("moments")
library(moments)

修复后的函数如下,还同步修正了你原代码中计算第二个向量分位数、峰度时误用第一个向量数据的问题,同时增加了位数保留处理,输出结果更适合直接用于报告:

make_paragraph <- function(v, w) {
  # 输出第一个变量的统计段落
  cat(
    "对于变量v,数值范围为", min(v), "到", max(v),
    "。均值为", round(mean(v),2), 
    ",中位数为", round(median(v),2), 
    "。方差为", round(var(v),2),
    ",标准差为", round(sd(v),2),
    "。四分位距为", round(IQR(v),2), 
    "。25分位数为", round(quantile(v,0.25),2),
    ",50分位数为", round(quantile(v, 0.5),2),
    ",75分位数为", round(quantile(v, 0.75),2),
    "。峰度为", round(kurtosis(v),2),
    ",偏度为", round(skew(v),2),
    "。\n\n", sep=""
  )
  
  # 输出第二个变量的统计段落
  cat(
    "对于变量w,数值范围为", min(w), "到", max(w),
    "。均值为", round(mean(w),2), 
    ",中位数为", round(median(w),2), 
    "。方差为", round(var(w),2),
    ",标准差为", round(sd(w),2),
    "。四分位距为", round(IQR(w),2), 
    "。25分位数为", round(quantile(w,0.25),2),
    ",50分位数为", round(quantile(w, 0.5),2),
    ",75分位数为", round(quantile(w, 0.75),2),
    "。峰度为", round(kurtosis(w),2),
    ",偏度为", round(skew(w),2),
    "。\n\n", sep=""
  ) 
}

调用示例:

x <- c(1.5, -0.3, 12, 8.5, -100)
y <- rnorm(10)
make_paragraph(x,y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:09:02