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

更新readr包后使用read_csv批量合并CSV文件报错如何解决

问题描述

更新包含readr在内的全部R包后,需要将指定文件夹下格式统一的多个.csv文件合并导入R环境,初始实现代码如下:

df <- list.files(path = "file path here",  # 识别所有CSV文件
                   pattern = "*.csv", full.names = TRUE) %>% 
                   lapply(read_csv) %>%                                           
                   bind_rows

运行代码后返回报错与警告:

Error in app$vspace(new_style$`margin-top` %||% 0) : attempt to apply non-function
In addition: Warning message:
One or more parsing issues, see `problems()` for details

尝试重装R、重新加载所有包后问题仍存在。

解决方案

修复核心报错

app$vspace相关报错和R本身安装、代码业务逻辑无关,属于tidyverse生态包版本不兼容问题,大多是更新readr时没有同步更新其依赖的cli、pillar包,导致readr触发解析问题提示时格式渲染失败,完全不需要重装R。

  • 先运行命令更新所有已安装包的匹配版本:
update.packages(ask = FALSE, checkBuilt = TRUE)
  • 如果更新后仍报错,单独重装核心依赖包即可解决:
install.packages(c("cli", "pillar"))

修正代码匹配规则

原代码的文件匹配规则存在漏洞:list.files的pattern参数支持正则表达式语法,原写法"*.csv"是系统文件通配符写法,不符合正则规则,可能匹配到文件名带.csv但实际不是csv格式的非目标文件。替换为正则写法即可精准匹配.csv后缀文件:

pattern = "\\.csv$"

处理解析警告

One or more parsing issues警告是readr自动识别列类型时,不同csv文件的同名列识别类型不一致、或列内存在不符合预期类型的值导致的,可按以下步骤排查:

  1. 先单独读取所有文件存为列表,不直接合并
  2. 调用problems()查看具体解析错误的位置、原因
  3. 如果确认所有csv文件格式完全统一,可在read_csv中手动指定列类型规则,避免自动识别偏差
    对应排查代码:
# 提取所有目标csv文件路径
csv_paths <- list.files(
  path = "替换为你的实际文件夹路径",
  pattern = "\\.csv$",
  full.names = TRUE
)
# 读取为列表对象
csv_list <- lapply(csv_paths, read_csv)
# 查看具体解析问题详情
problems(csv_list)

修复后可直接运行的完整代码

library(tidyverse)
df <- list.files(
    path = "替换为你的实际文件夹路径",
    pattern = "\\.csv$",
    full.names = TRUE
  ) %>% 
  lapply(read_csv, show_col_types = FALSE) %>% 
  bind_rows()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 02:48:33