当列在R中包含特定字符串时删除列

xpcnnkqh  于 2022-12-25  发布在  其他
关注(0)|答案(3)|浏览(526)

我想删除其中包含LA的列。示例数据集如下所示:

testdata <- data.frame(id = c(1,2,3),
                   v1 = c("LA", "C","D"),
                   v2 = c("N","M","LA"),
                   v3 = c("D","E","T"))

> testdata
  id v1 v2 v3
1  1 LA  N  D
2  2  C  M  E
3  3  D LA  T

如何删除v1v2并获得下面所需的数据集?

> testdata
      id   v3
    1  1    D
    2  2    E
    3  3    T
t2a7ltrp

t2a7ltrp1#

testdata%>%
  select(-which(sapply(., function(x) any(x=="LA"))))

  id v3
1  1  D
2  2  E
3  3  T
3npbholx

3npbholx2#

使用sapplyvapply可以执行以下操作:

testdata[vapply(testdata, function(x) !any(grepl("LA", x)), FUN.VALUE = logical(1))]
#>   id v3
#> 1  1  D
#> 2  2  E
#> 3  3  T

testdata[sapply(testdata, function(x) !any(grepl("LA", x)))]
#>   id v3
#> 1  1  D
#> 2  2  E
#> 3  3  T

或者使用dplyr

library(dplyr)

testdata %>%
  select(where(~!any(grepl("LA", .x))))
#>   id v3
#> 1  1  D
#> 2  2  E
#> 3  3  T
5w9g7ksd

5w9g7ksd3#

使用discard

library(purrr)
discard(testdata, ~ "LA" %in% .x)
  id v3
1  1  D
2  2  E
3  3  T

相关问题