我有以下数据:
my_data <- tribble(
~item1, ~item2,
"car", "ferrari",
"house", "3 bed",
NA, "3"
)
我正在尝试提取其中存在“house”的列的名称
我已经尝试过:
my_data %>%
mutate(across(everything(), ~str_detect(.x , "house")))
返回:
# A tibble: 3 × 2
item1 item2
<lgl> <lgl>
1 FALSE FALSE
2 TRUE FALSE
3 NA FALSE
这就是我陷入困境的地方,试图提取“item1”列,我尝试使用函数
any()
,但这将整个事情压缩为TRUE
。
请寻找 dplyr/purrr 解决方案。谢谢。
您正在寻找
dplyr::cur_column
。必须与across
一起使用:
mutate(my_data, across(starts_with("item"), \(x) paste0(x, " in ", cur_column())))
输出:
# A tibble: 3 × 2
item1 item2
<chr> <chr>
1 car in item1 ferrari in item2
2 house in item1 3 bed in item2
3 NA in item1 3 in item2
试试这个:
result <- my_data %>%
pivot_longer(everything(),
names_to = "column_name",
values_to = "value") %>%
filter(value == "house") %>%
pull(column_name)
#output
print(result)
[1] "item1"