我有一个已命名的列表,并且在该列表中,我希望根据该列表的名称重命名它们的列.

我的方法的问题似乎是.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

推荐答案

我喜欢使用的另一种避免.x个冲突的方法是对map使用匿名函数:

unique(names(my_list)) |> 
  # if you want a named list, use set_names
  # purrr::set_names() |>
  purrr::map(\(list_name) my_list[names(my_list) == list_name] |> 
               dplyr::bind_rows() |> 
               dplyr::rename_with(.cols = "x",
                                  .fn   = ~paste0("new_", list_name))
  )

R相关问答推荐

编辑文件后编辑RhandsonTable

R Highcharts与两个位置关联的注释

如何在kableextra调用cell_spec()中忽略NA?

用预测NLS处理R中生物学假设之上的误差传播

在使用tidyModels和XGBoost的二进制分类机器学习任务中,所有模型都失败

如何在PackageStatus()中列出&q;不可用的包&q;?

以字符格式导入的ExcelElectron 表格日期列标题

通过初始的shiny 应用更新部署的shiny 应用的数据和参数,其中部署的应用程序显示为URL

在R中的数据框上使用Apply()函数时,如何保留非数字列?

网络抓取新闻标题和时间

随机将数据帧中特定列上的某些行设置为NA

条形图中的条形图没有try 赋予它们的 colored颜色

在R中添加要打印的垂直线

在具有条件的循环中添加行

Gggvenn为Venn增加了不存在的价值

如何系统地根据柱的位置对柱进行操作?

动态分组和计算分组依据

判断列集是否以任意顺序按行顺序在R中相同

线性混合模型方差分析的非参数方法及幂计算

按组判断值是否再次出现