如何将多个数据框中的同一列更改为唯一标识符?

问题描述 投票:0回答:1

我正在尝试使用名称列表在 8 个类似 dfs 的 Site.Name 列中放置一个唯一 ID。我试过了

site<-c("Smith","Sledd Creek","Crooked Creek","Duncan","Mammoth Rurnace","Sugar","Jake Fork","Honker")

for (i in 1:8) {
 EXO[[i]]$Site.Name<-site[i]  
}

但是我一直收到错误 错误:找不到对象“EXO”

下面的代码完成了我所需要的,但我想知道是否可以使用 for 循环或 lapply 或类似的东西来做这样的事情。

site<-c("Smith","Sledd Creek","Crooked Creek","Duncan","Mammoth Rurnace","Sugar","Jake Fork","Honker")

EXO1$Site.Name<-site[1]  
EXO2$Site.Name<-site[2] 
EXO3$Site.Name<-site[3] 
EXO4$Site.Name<-site[4] 
EXO5$Site.Name<-site[5] 
EXO6$Site.Name<-site[6] 
EXO7$Site.Name<-site[7] 
EXO8$Site.Name<-site[8] 
r for-loop lapply
1个回答
0
投票

这些情况总是表明需要将数据帧分组到一个列表中,以便您可以使用函数式编程。最简单的方法是使用一些 tidyverse 工具,即

purrr
dplyr
:

library(dplyr)
library(purrr)

map2(list(EXO1, EXO2, EXO3, EXO4, EXO5, EXO6, EXO7, EXO8), site, 
     function(x, y) { mutate(x, Site.Name = y) })

我无法测试输出是否是您想要的,因为您没有为这些数据帧提供任何可重现的数据。

© www.soinside.com 2019 - 2024. All rights reserved.