根据 R 中表的列数过滤列表

Sia*_*ash 2 r dplyr tidyverse

我有一个这样的数据框列表: 在此输入图像描述 我想知道如何在 R 中保留 15 列的数据框并删除此列表中的其他数据框。

Dan*_*iel 5

对于您以后的问题,请避免使用屏幕截图并使用该功能分享实际对象dput()

您可以使用purrr::keep()

library(tidyverse)
f=function(n) matrix(nrow=2, ncol=n) %>% as.data.frame()
x=list(
   df1=f(15),
   df2=f(15),
   df3=f(6),
   df4=f(6),
   df5=f(15)
)
x %>% keep(~ncol(.x)==15)
#> $df1
#>   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
#> 1 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
#> 2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
#> 
#> $df2
#>   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
#> 1 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
#> 2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
#> 
#> $df5
#>   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
#> 1 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
#> 2 NA NA NA NA NA NA NA NA NA  NA  NA  NA  NA  NA  NA
Run Code Online (Sandbox Code Playgroud)

由reprex 包于 2021 年 10 月 3 日创建(v2.0.0)

(管道时第一个)的第二个参数purrr::keep()是一个谓词函数,它应该根据是否应保留列返回单个逻辑值。