包含特定列名的数据框子集列表

May*_*ans 4 r list subset lapply purrr

我有一个数据框列表,我想x从每个数据框中获取列作为字符串。

testing <- list(data.frame(A = "Yes", B = "No"),
                data.frame(B = "No", C = "No"),
                data.frame(A = "Yes"))
Run Code Online (Sandbox Code Playgroud)

我可以打印哪些数据帧中有colnameA,但我无法连接到子集原始测试

lapply(testing, function(x) "A" %in% colnames(x))
Run Code Online (Sandbox Code Playgroud)

期望输出

[[1]]
    A  B
1 Yes No

[[2]]
    A
1 Yes
Run Code Online (Sandbox Code Playgroud)

mar*_*kus 7

另一个基本选项是 Filter

out <- Filter(function(x) "A" %in% names(x), testing)
out
#[[1]]
#    A  B
#1 Yes No
#
#[[2]]
#    A
#1 Yes
Run Code Online (Sandbox Code Playgroud)


akr*_*run 5

我们可以sapply用来创建逻辑vector和子集

testing[sapply(testing, function(x) "A" %in% colnames(x))]
Run Code Online (Sandbox Code Playgroud)