首页 > 解决方案 > 将类似的变量应用于 r 中的多个数据集

问题描述

我有 6 个从 dat1 到 dat6 的数据,我想添加变量区域并以类似的方式标记它们,如下所示:

dat1$region <- paste("NE-1")
dat2$region <- paste("NE-2")
dat3$region <- paste("NE-3")
dat4$region <- paste("NE-4")
dat5$region <- paste("NE-5")

如何以更简洁的方式编写此代码?使用applyfor-loop?谢谢!!

标签: rfor-loopapply

解决方案


将所有数据框保存列表中,然后使用lapply

# example dataframes
dat1 <- cars[1:2, ]
dat2 <- cars[3:4, ]
dat3 <- cars[5:6, ]

myList <- list(dat1, dat2, dat3)
# myList 
# [[1]]
#   speed dist
# 1     4    2
# 2     4   10
# 
# [[2]]
#   speed dist
# 3     7    4
# 4     7   22
# 
# [[3]]
#   speed dist
# 5     8   16
# 6     9   10

然后更容易进行重复操作。循环遍历列表,添加区域列:

res <- lapply(seq_along(myList), function(i){
  x <- myList[[ i ]]
  x$region <- paste0("NE-", i)
  x
})

res
# [[1]]
#   speed dist region
# 1     4    2   NE-1
# 2     4   10   NE-1
# 
# [[2]]
#   speed dist region
# 3     7    4   NE-2
# 4     7   22   NE-2
# 
# [[3]]
#   speed dist region
# 5     8   16   NE-3
# 6     9   10   NE-3

推荐阅读