我有一个已命名的列表,并且在该列表中,我希望根据该列表的名称重命名它们的列.
我的方法的问题似乎是.x
个占位符,我认为这将是我唯一的名单名称.但在rename_with
函数中,.x
似乎是在每个列表数据帧内求值,而不是从原始的.x
求值.有什么办法可以延续原来的.x
个(或名单名称)以进行重命名吗?
my_list <- list(L1 = data.frame(x=1:3),
L1 = data.frame(x=1:3),
L2 = data.frame(x=1:3),
L2 = data.frame(x=1:3))
my_list |>
purrr::map(.x = unique(names(my_list)),
.f = ~my_list[names(my_list) == .x] |>
dplyr::bind_rows() |>
dplyr::rename_with(.cols = "x",
.fn = ~paste0("new_", .x)))
预期输出:
[[1]]
new_L1
1 1
2 2
3 3
4 1
5 2
6 3
[[2]]
new_L2
1 1
2 2
3 3
4 1
5 2
6 3