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

R语言如何从dataframe列表中筛选仅含2列的元素生成新列表

R 筛选列表中指定列数的dataframe

实现逻辑是遍历列表所有元素,筛选出同时满足「是dataframe类型、列数等于2」的元素存入新列表,以下是两种常用实现方式:

方法1:base R 原生实现(无需加载第三方包)

使用Filter函数直接对列表做过滤:

df1 <- data.frame(c(1:5), c(6:10))
df2 <- data.frame(c(1:7))
df3 <- data.frame(c(1:5), c("a", "b", "c", "d", "e"))
my_list <- list(df1, df2, df3)

# 核心过滤逻辑,兼容列表存在非dataframe元素的场景
new_list <- Filter(function(x) is.data.frame(x) && ncol(x) == 2, my_list)

验证结果:

sapply(new_list, ncol)
# 输出为 2 2,对应符合条件的df1、df3

方法2:tidyverse 生态实现(使用purrr包)

适合习惯使用tidyverse语法的用户,用keep函数完成过滤:

library(purrr)

new_list <- keep(my_list, ~is.data.frame(.x) && ncol(.x) == 2)

两种方法最终得到的new_list就是仅包含2列dataframe的目标列表,元素顺序和原列表中符合条件的元素顺序一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:39:03