% -6ren">
gpt4 book ai didi

使用 purrr 重命名 tibbles 列表中的不同列

转载 作者:行者123 更新时间:2023-12-05 08:51:47 25 4
gpt4 key购买 nike

我正在尝试重命名 tibbles 列表中的几列基于正则表达式。

让我们看一下下面的例子:

library(tidyverse)

df1 <- tibble(
id_site = 1,
country = rep(paste0("country", 1:2), each = 3, len = 5),
species = rep(paste0("sp.", c(1, 3)), each = 3, len = 5),
min = c(100, 900, 2200, 400, 1300)
)
df2 <- tibble(
id_ref = 2,
country = "country3",
species = rep(paste0("sp.", 2:6), each = 1, len = 4),
min_alt = c(2700, 400, 600, 1800)
)

我想重命名 id_siteid_refdf1min_altmindf2 .

我设法使用以下代码一次重命名一列:

list(df1, df2) %>% 
set_names("df1", "df2") %>%
map(
~ .x %>%
rename_at(
colnames(.) %>% str_which("alt$"),
~ .x %>% str_replace(".+", "min")
) %>%
rename_at(
colnames(.) %>% str_which("site$"),
~ .x %>% str_replace(".+", "id_ref")
)
)

但我发现它很重复......

我想知道是否有可能在一次rename_x 内一次完成此操作功能。

最佳答案

以下是重复性较低的内容:

list(df1, df2) %>% 
set_names("df1", "df2") %>%
map(~ .x %>%
rename_at(vars(matches("(alt|site)$")),
str_replace_all, pattern = c("_alt" = "", "site" = "ref")))

关于使用 purrr 重命名 tibbles 列表中的不同列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607135/

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