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

如何在R中读取Excel至DataFrame并统计各文件读取行数用于验证

统计每个Excel文件读取的行数

嘿,我来帮你搞定这个行数验证的问题!你现在用lapply批量读取Excel文件,只需要在读取逻辑里加入行数统计,或者事后对已读取的数据计算就行,下面给你两种实用的方法:

方法一:读取时直接统计行数(推荐)

可以在你现有的匿名函数里,用nrow()计算每个读取后的DataFrame行数,同时把文件名和行数对应保存下来,这样读取和统计一步完成:

# 修改你的原代码,加入行数统计
dat_with_stats <- lapply(file.list, function(i){ 
  print(paste("正在读取文件:", i))
  # 读取Excel文件
  x <- read_xlsx(
    i,
    sheet = NULL, 
    range = cell_cols("A:AE"), 
    col_names = TRUE, 
    skip = 1, 
    trim_ws = TRUE, 
    guess_max = 1000
  )
  x$file <- i  # 标记数据来源文件
  # 统计当前文件的读取行数
  read_row_count <- nrow(x)
  print(paste("文件", i, "读取到", read_row_count, "行数据"))
  
  # 返回一个包含数据和行数的列表,方便后续处理
  list(data_frame = x, row_count = read_row_count)
})

# 把所有文件的统计结果整理成一个清晰的DataFrame
row_verification_df <- data.frame(
  filename = sapply(dat_with_stats, function(item) item$data_frame$file[1]),
  read_rows = sapply(dat_with_stats, function(item) item$row_count),
  stringsAsFactors = FALSE
)

# 查看统计结果
print(row_verification_df)

方法二:对已读取的数据事后统计

如果你已经运行了原代码得到了dat列表(每个元素是一个DataFrame),可以直接用sapply批量计算每个DataFrame的行数:

# 假设dat是你已经读取好的列表
row_counts <- sapply(dat, nrow)

# 转换成带文件名的DataFrame
row_verification_df <- data.frame(
  filename = sapply(dat, function(df) df$file[1]),
  read_rows = row_counts,
  stringsAsFactors = FALSE
)

print(row_verification_df)

小贴士:和Excel实际行数对应注意点

  • 你设置了skip=1,所以Excel里的实际有效数据行数应该是「Excel中数据的最后一行行号 - 1」(因为跳过了第一行表头)。
  • 如果Excel里存在空白行,read_xlsx会自动读取到最后一个非空行,这时候你看到的Excel行号可能比实际读取的行数多,注意检查数据范围哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:23:31