gpt4 book ai didi

r - 带有 rename_with 的 Purrr 映射

转载 作者:行者123 更新时间:2023-12-01 21:21:22 24 4
gpt4 key购买 nike

我正在尝试清理数据集的名称。我使用 janitor::clean_names() 开始。但是,我仍然想用下划线 _ 来分隔缩写词。我有使用 rename_with(~str_replace(.x, "gh", "gh_"), .cols = starts_with("gh")) 的代码,但是有很多缩写,它会是很高兴找到一种方法来映射或以其他方式使此过程功能化。

dat <- tibble(ghrisk_value = c(1,2), 
ghrisk_corrected = c(2,3),
devpolicy_value = c(4,5),
devpolicy_corrected = c(5,6))

# code works but not functionalized
dat %>%
rename_with(~str_replace(.x, "gh", "gh_"), .cols = starts_with("gh")) %>%
rename_with(~str_replace(.x, "dev", "dev_"), .cols = starts_with("dev")) %>%
names()

# attempt at map...
abbr_words <- c("gh", "dev")
map(dat, ~rename_with(str_replace(.x, abbr_words, str_c(abbr_words, "_")))

最佳答案

你不需要map() .只需使用正则表达式语法 "(?<=a|b|c)" , 匹配 a 后面的位置或 bc并插入下划线。此外,starts_with()可以将字符向量作为输入来匹配所有元素的并集。

abbr_words <- c("gh", "dev")

pattern <- sprintf("(?<=%s)", str_c(abbr_words, collapse = "|"))
# [1] "(?<=gh|dev)"

dat %>%
rename_with(~ str_replace(.x, pattern, "_"), starts_with(abbr_words))

# # A tibble: 2 x 4
# gh_risk_value gh_risk_corrected dev_policy_value dev_policy_corrected
# <dbl> <dbl> <dbl> <dbl>
# 1 1 2 4 5
# 2 2 3 5 6

关于r - 带有 rename_with 的 Purrr 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63729749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com