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

使用read_table与for循环合并数据框时遇行数不匹配错误求解决

问题:合并多文本文件到数据框时出现行数不匹配错误

尝试用for循环结合read_table将3个文本文件(均为2946行)按列合并到同一数据框,执行代码如下:

te <- list.files("UCI HAR Dataset/test")
te <- te[-1] 
testdf <- data.frame()
for (i in 1:3){
    testdf <- cbind(testdf, read_table(te[i]))
}

触发错误:

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

推测错误源于初始空数据框(0行)与待合并文件(2946行)的行数冲突,寻求更优实现方式。

解决方案

方式一:先读取第一个文件初始化数据框

避免用空数据框作为起始,先读取第一个文件创建初始数据框,再循环合并剩余文件:

te <- list.files("UCI HAR Dataset/test")
te <- te[-1] 
# 用第一个文件初始化数据框
testdf <- read_table(te[1])
# 循环合并剩余文件
for (i in 2:3){
    testdf <- cbind(testdf, read_table(te[i]))
}

方式二:用purrr包实现批量读取+列合并

借助purrr的map_dfc函数,实现更简洁的向量化操作,无需手动循环:

library(purrr)
library(readr)

te <- list.files("UCI HAR Dataset/test")[-1]
# 批量读取所有文件并按列合并
testdf <- map_dfc(te, read_table)

方式三:用lapply+do.call组合实现

先批量读取所有文件到数据框列表,再统一按列合并:

te <- list.files("UCI HAR Dataset/test")[-1]
# 批量读取生成数据框列表
df_list <- lapply(te, read_table)
# 合并列表中的所有数据框
testdf <- do.call(cbind, df_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:15:07