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

基于不同data.frame的nrow结果创建观测数统计数据框

嘿,我来帮你搞定这个需求!你现在需要把多个data.frame的行数统计出来,整理成一个新的data.frame对吧?下面给你两种实用方案,按需选就行:

方法一:手动快速整理(适合少量数据框)

如果你的data.frame数量不多,像示例里的x1、y1、z1,直接把名称和行数对应起来构造新数据框就好,简单直接:

# 先构造你的示例数据
x <- c(1, 3, 4, 5, 6)
x1 <- data.frame(x)
y <- c(3, 9)
y1 <- data.frame(y)
z <- c(23, 43, 23, 12, 1, 3, 7, 8, 9)
z1 <- data.frame(z)

# 直接整理统计结果
result_df <- data.frame(
  df_name = c("x1", "y1", "z1"),
  obs_count = c(nrow(x1), nrow(y1), nrow(z1))
)

# 查看最终结果
print(result_df)

运行后会得到你想要的结果:

df_name obs_count
1      x1         5
2      y1         2
3      z1         9
方法二:批量处理(适合大量数据框)

如果你的data.frame数量很多,一个个手动写太繁琐,把它们放进列表里批量处理会高效很多:

# 把需要统计的data.frame统一放进列表(名称和数据框对应)
df_list <- list(x1 = x1, y1 = y1, z1 = z1)

# 批量计算行数并整理成数据框
result_df <- data.frame(
  df_name = names(df_list),
  obs_count = sapply(df_list, nrow)
)

# 查看结果
print(result_df)

后续要是新增data.frame,只要把它加到df_list里就行,不用改其他代码,非常省心。

要是你想自动抓取当前环境里所有的data.frame(不用手动列出来),还可以用这个方法:

# 筛选当前环境下所有的data.frame
all_dfs <- eapply(.GlobalEnv, is.data.frame)
target_dfs <- names(all_dfs[all_dfs == TRUE])

# 批量统计每个data.frame的行数
result_df <- data.frame(
  df_name = target_dfs,
  obs_count = sapply(target_dfs, function(df) nrow(get(df)))
)

print(result_df)

这个方法会自动识别当前环境里的所有data.frame,适合数据框数量多且不需要筛选的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:23:54