簡體   English   中英

從 R 中的數據幀列表進行子集化

[英]Subsetting from a list of dataframes in R

我有一個數據框列表:

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)

從 my_list 中,我想提取只有 2 列(df1 和 df3)的數據框,並將它們放入一個新列表中。

也許你可以嘗試lengths

> my_list[lengths(my_list) == 2]
[[1]]
  c.1.5. c.6.10.
1      1       6
2      2       7
3      3       8
4      4       9
5      5      10

[[2]]
  c.1.5. c..a....b....c....d....e..
1      1                          a
2      2                          b
3      3                          c
4      4                          d
5      5                          e

也可以使用lapply和邏輯條件進行子集化( sapply也可以):

my_list[lapply(my_list, ncol) == 2]
[[1]]
  c.1.5. c.6.10.
1      1       6
2      2       7
3      3       8
4      4       9
5      5      10

[[2]]
  c.1.5. c..a....b....c....d....e..
1      1                          a
2      2                          b
3      3                          c
4      4                          d
5      5                          e

我們可以在條件下使用keep from purrr包:

library(purrr)
my_list %>% keep(~ ncol(.x) == 2)
[[1]]
  c.1.5. c.6.10.
1      1       6
2      2       7
3      3       8
4      4       9
5      5      10

[[2]]
  c.1.5. c..a....b....c....d....e..
1      1                          a
2      2                          b
3      3                          c
4      4                          d
5      5                          e

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM