我正在尝试使用名称列表在 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]
这些情况总是表明需要将数据帧分组到一个列表中,以便您可以使用函数式编程。最简单的方法是使用一些 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) })
我无法测试输出是否是您想要的,因为您没有为这些数据帧提供任何可重现的数据。