如何从数据帧列表中按通用名称进行子集化?

问题描述 投票:0回答:1

我想知道如何从数据帧列表中按列名称对数据帧进行子集化?

例如,我有

MyDfList
,一个包含 3 个数据帧、4 列的列表,我只想保留列表中所有数据帧中的两列(
A
D
)。

MyDfList <- list(data.frame(A = "S1", B = "2208", C ="2399", D="1.086504"),
                data.frame(A = "S2", B = "6756", C ="6970", D="1.031676"),
                data.frame(A = "S3", B = "8271", C ="8401", D="1.015718"))

我正在尝试但无法通过。

out0<-lapply(MyDfList , function(x) c("A","D") %in% colnames(x))

out1 <- Filter(function(x) c("A","D") %in% names(x), MyDfList )

out2<-MyDfList[sapply(MyDfList , function(x) c("A","D") %in% colnames(x))]
r dataframe list subset
1个回答
0
投票

基础R:

lapply(MyDfList, function(df) df[, c("A", "D")])

整洁诗句:

library(purrr)
library(dplyr)

 MyDfList %>% 
  map(~select(., A, D))

[[1]]
   A        D
1 S1 1.086504

[[2]]
   A        D
1 S2 1.031676

[[3]]
   A        D
1 S3 1.015718

© www.soinside.com 2019 - 2024. All rights reserved.