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

升级R 4.4.0后Quarto文档渲染失败,报.make_numeric_version()错误

R 4.4.0 下 Quarto 渲染描述统计表格报错的排查与解决

报错相关代码(第122-160行)

# First we create a subset of data that we want a summary of.
selected_vars <- c("y0age", "y1sex", "y1gen", "y1racm", "y0scr06", "y1eco")
dem_data <- subset(data, select = selected_vars)

# We need to convert labelled data into factors. 
dem_data <- dem_data %>%
  mutate(across(c(y1sex, y1gen, y1racm, y0scr06, y1eco), ~ haven::as_factor(.)))

dem_data$y0age <- as.numeric(dem_data$y0age)

dem_table <- gtsummary::tbl_summary(
    dem_data,
    include = c(y0age, y1sex, y1gen, y1racm, y0scr06, y1eco),
    missing = "no",
    type = (list(
      y0age ~ "continuous2")
    ),
        statistic = list(
      all_continuous() ~ "{mean} ({sd})",
      all_categorical() ~ "{n} ({p}%)"
    ),
    digits = list(
      all_continuous() ~ 2,
      all_categorical() ~ c(0, 2)),
    label = list(
      y0age ~ "Age",
    y1sex ~ "Sex Assigned at Birth",
    y1gen ~ "Gender Identity",
    y1racm ~ "Racial Identity",
    y0scr06 ~ "Sexual Orientation",
    y1eco ~ "Financial Hardship"))

渲染错误日志

processing file: Hope_Moderation.qmd
  |...................                                |  36% [unnamed-chunk-6] 
Quitting from lines  at lines 122-160 [unnamed-chunk-6] (Hope_Moderation.qmd)
Error in `.make_numeric_version()`:
! invalid non-character version specification 'x' (type: double)
Backtrace:
  1. global .main()
  2. execute(...)
  3. rmarkdown::render(...)
  4. knitr::knit(knit_input, knit_output, envir = envir, quiet = quiet)
  5. knitr:::process_file(text, output)
     ...
 26. flextable:::is_in_quarto()
 28. base::Ops.numeric_version(...)
 29. base::as.numeric_version(e1)
 30. base::numeric_version(x)
 31. base::.make_numeric_version(x, strict, .standard_regexps()$valid_numeric_version)
                                                                                                             
Execution halted

会话信息

sessionInfo()
# R version 4.4.0 (2024-04-24)
# Platform: aarch64-apple-darwin20
# Running under: macOS Sonoma 14.4.1

问题描述

将R版本升级至4.4.0后,原本可正常运行的Quarto文档无法渲染,但相同代码在Rmarkdown中能正常执行。使用haven包导入SPSS的.sav格式数据,执行上述数据处理与生成描述统计表格的代码时触发上述错误。

解决方案

这个错误源于flextable包旧版本与R 4.4.0的兼容性问题,flextable::is_in_quarto()函数的版本号类型处理逻辑未适配R 4.4.0的numeric_version更新。

  • 优先方案:升级flextable到最新版本
    在R控制台执行以下命令更新包:

    install.packages("flextable")
    

    最新版的flextable已经修复了该兼容性问题,升级后重新渲染Quarto文档即可正常运行。

  • 临时修复方案(若升级仍有问题)
    如果暂时无法升级包,可以在代码开头覆盖is_in_quarto函数,规避版本号比较步骤:

    assignInNamespace(
      "is_in_quarto",
      function() {
        !is.na(Sys.getenv("QUARTO_VERSION", unset = NA))
      },
      ns = "flextable"
    )
    

    这段代码会替换flextable内部的is_in_quarto函数逻辑,直接通过环境变量判断是否在Quarto环境中。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 04:08:13