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

如何在R语言中移除列表中行数为0的数据表?

处理包含空data.table的列表并批量执行线性回归

第一步:过滤空数据表

你可以通过判断每个data.table的行数是否大于0来筛选出非空表,以下是两种常用实现方式:

Base R 方法

# 假设你的data.table列表名为 dt_list
non_empty_dts <- Filter(function(dt) nrow(dt) > 0, dt_list)

Tidyverse(purrr)方法

如果你习惯用tidyverse工具链,可以用purrr::keep():

library(purrr)
library(data.table)

non_empty_dts <- keep(dt_list, ~ nrow(.x) > 0)

第二步:批量执行线性回归

拿到非空表列表后,就可以用循环或映射函数批量跑lm():

Base R 用 lapply

# 假设要回归的变量是 y ~ x
models <- lapply(non_empty_dts, function(dt) lm(y ~ x, data = dt))

Tidyverse 用 purrr::map

models <- map(non_empty_dts, ~ lm(y ~ x, data = .x))

进阶:同时过滤缺变量的表

如果担心有些非空表缺少你需要的x或y变量,可以在过滤时加入变量存在性检查:

Base R 版本

non_valid_dts <- Filter(function(dt) {
  nrow(dt) > 0 && all(c("x", "y") %in% names(dt))
}, dt_list)

Tidyverse 版本

non_valid_dts <- keep(dt_list, ~ {
  nrow(.x) > 0 && all(c("x", "y") %in% names(.x))
})

这样处理后,non_valid_dts里只会保留有数据且包含目标变量的表,后续跑回归就不会因为空表或缺变量报错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:17:09