【发布时间】:2021-09-08 19:16:04
【问题描述】:
我有这个数据框:
df <- structure(list(col1 = c("Z2", "A2", "B2", "C2", "A2", "E2", "F2",
"G2"), col2 = c("Z2", "Z2", "A2", "B2", "C2", "D2", "A2", "F2"
), col3 = c("A2", "B2", "C2", "D2", "E2", "F2", "G2", "Z2")), class = "data.frame", row.names = c(NA, -8L))
> df
col1 col2 col3
1 Z2 Z2 A2
2 A2 Z2 B2
3 B2 A2 C2
4 C2 B2 D2
5 A2 C2 E2
6 E2 D2 F2
7 F2 A2 G2
8 G2 F2 Z2
我想在tidyverse 设置中明确使用filter、across 和str_detect 来过滤所有以A 开头的行而不是col1:col3。
预期结果:
col1 col2 col3
1 Z2 Z2 A2
2 A2 Z2 B2
3 B2 A2 C2
4 A2 C2 E2
5 F2 A2 G2
我试过了:
library(dplyr)
library(stringr)
df %>%
filter(across(c(col1, col2, col3), ~str_detect(., "^A")))
这给出了:
[1] col1 col2 col3
<0 Zeilen> (oder row.names mit Länge 0)
我想了解为什么这段代码在使用 filter、across 和 str_detect 时不起作用!
【问题讨论】:
标签: r dplyr tidyverse stringr across