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

R语言使用purrr::map_dfr报错Error: Argument 1 must have names原因求解

报错含义说明

你遇到的"Error: Argument 1 must have names."报错翻译为:错误:第1个参数必须包含列名。

报错触发原因

purrr::map_dfr的功能是将每次迭代返回的结果按行拼接为统一的dataframe,要求每次迭代的返回值是带有列名的dataframe/tibble结构。你自定义的func函数仅返回了sort()处理后的一维向量,没有绑定列名,也没有封装为表格结构,map_dfr无法完成拼接逻辑,因此触发该报错。

此外你当前的代码逻辑也不符合需求:你只对synergytst单列做了排序,没有保留原数据集的其他列,也没有将排序后的列回填到原数据集中。

修正方案

根据你的实际需求选择对应方案:

方案1:保留所有列,按时间列排序后合并为总表

如果需要保留每个csv的全部字段,仅按synergytst升序排列后合并为一个大表,使用如下代码:

library(tidyverse)

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.csv)

func <- function(x){
  # 按synergytst列升序排序,保留原表所有列
  arrange(x, synergytst, .by_group = FALSE)
}

result <- purrr::map_dfr(myfiles, func)

方案2:仅提取排序后的时间列合并为总表

如果只需要把所有数据集排序后的synergytst列汇总为一张表,使用如下代码:

library(tidyverse)

temp = list.files(pattern="*.csv")
myfiles = lapply(temp, read.csv)

func <- function(x){
  # 将排序后的向量封装为带列名的tibble
  tibble(synergytst = sort(x$synergytst, na.last = TRUE))
}

result <- purrr::map_dfr(myfiles, func)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:24:02