【发布时间】:2020-12-07 09:10:10
【问题描述】:
考虑以下命名向量vec 和tibble df:
vec <- c("1" = "a", "2" = "b", "3" = "c")
df <- tibble(col = rep(1:3, c(4, 2, 5)))
df
# # A tibble: 11 x 1
# col
# <int>
# 1 1
# 2 1
# 3 1
# 4 1
# 5 2
# 6 2
# 7 3
# 8 3
# 9 3
# 10 3
# 11 3
我想将col 列中的值替换为vec 中对应的命名值。
我正在寻找一种tidyverse 方法,它不涉及将vec 转换为小标题。
我尝试了以下方法,但没有成功:
df %>%
mutate(col = map(
vec,
~ str_replace(col, names(.x), .x)
))
预期输出:
# A tibble: 11 x 1
col
<chr>
1 a
2 a
3 a
4 a
5 b
6 b
7 c
8 c
9 c
10 c
11 c
【问题讨论】:
-
df %>% mutate(col = str_replace_all(col, vec))应该可以完成这项工作。