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

如何高效生成多数据框行数统计表格?及ldply列名修改问题

高效创建多数据框行数统计表格的解决方案

我懂你现在的困扰——试了好几种方法,用stack和ldply都没得到想要的行数统计表格对吧?尤其是ldply生成的列名总是不是你想要的Dataset和Samples,下面给你针对性解决这个问题,还附带更顺手的替代方案:

1. 给ldply的结果指定自定义列名

你之前的代码返回.id和V1列,是因为没利用好ldply的.id参数,也没让函数返回带列名的结构。只要改两处就行:

  • 用.id参数直接把分组列命名为Dataset
  • 让匿名函数返回一个带Samples列名的数据框,而不是单纯的数值向量

修改后的代码如下:

library(plyr)
# 生成符合预期的表格
row_count_table <- ldply(
  list(WGS = WGS.ped, WES = WES.ped.exp, MIPS = mips.ped.exp),
  function(df) data.frame(Samples = nrow(df)),
  .id = "Dataset"
)

运行后你就会得到两列:Dataset对应数据框名称,Samples对应各自的行数,完全匹配你的预期格式。

如果觉得上面的写法有点繁琐,也可以先运行原代码,再手动重命名列:

# 先获取结果
temp_result <- ldply(
  list(WGS = WGS.ped, WES = WES.ped.exp, MIPS = mips.ped.exp),
  function(l) nrow(l)
)
# 重命名列
colnames(temp_result) <- c("Dataset", "Samples")

2. 更现代的替代方案(推荐)

如果你不局限于plyr,用tidyverse系列的工具会更直观简洁,比如结合purrr和tibble:

library(tibble)
library(purrr)

# 先把数据框放进命名列表
data_list <- list(WGS = WGS.ped, WES = WES.ped.exp, MIPS = mips.ped.exp)
# 遍历列表生成表格
row_count_table <- imap_dfr(data_list, ~ tibble(
  Dataset = .y,  # .y对应列表的名称
  Samples = nrow(.x)  # .x对应列表里的每个数据框
))

这种写法逻辑更清晰,也不容易出现列名混乱的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:44:41