r - 将列值前缀添加到列表中多个数据框中的选定列名
问题描述
我有 149 个数据框的列表;我想将每个数据框中的选定列名称更改为以 SiteLoc 列中的值作为前缀。列表的缩写版本如下:
SL1_68 <- tibble(SiteLoc=rep("SL1_68",5),
Cov1=c(10,50,0,75,10),
Cov2=c(50,20,15,50,75),
Cov3=c(25,5,0,0,75))
SL2_70 <- tibble(SiteLoc=rep("SL2_70",5),
Cov1=c(10,50,0,75,10),
Cov2=c(50,20,15,50,75),
Cov3=c(25,5,0,0,75))
Site_list <- list(SL1_68,SL2_70)
我找到了以下代码,它允许我更改给定数据框中选定的列名:
Site_list$SL1_68 <- Site_list$SL1_68 %>%
rename_at(2:4, ~ paste("SL1_68", ., sep = "_"))
但是,我不想遍历每个单独的数据框,而是想为整个列表编写一个循环或函数,该列表将在列名前面加上“SiteLoc”中的值(这对于每个数据框都是唯一的)。
我找到了以下问题/答案,这似乎对我有所帮助,但我不确定如何将函数和下面的答案应用于我自己的代码以仅将其应用于第 2-4 列:
任何帮助将不胜感激。
解决方案
您可以在 for 循环中执行此操作。
for(i in 1:length(Site_list)) {
prefix <- unique(Site_list[[i]]$SiteLoc)
Site_list[[i]] <- Site_list[[i]] %>%
rename_at(2:4, ~ paste(prefix, ., sep = "_"))
}
可能有一种更优雅的方式,但这似乎有效。
推荐阅读
- shell - 如何在 unix 中按修改后的时间戳对文件进行排序,以便 shellscript 一次选择一个
- java - 如何使用 Jsoup 登录网站进行网页抓取
- javascript - Javascript - 无法访问从 csv 文件创建的数组的数组元素
- python - 如何在 odo o 11 中隐藏报表中的创建和编辑按钮?
- javascript - 如何在 Vuetify 组件中以编程方式设置组件属性
- c# - 插入方法有效,但 GET 方法无效
- c# - 将 C# 枚举公开为数据库中的视图
- java - 如何从Java文件中获取变量名列表?
- php - 如何设置仅以用户正在使用的当前语言为国家/地区显示的产品费用
- google-bigquery - 从 bigquery 查询 firestore 数据库