R - 如何对多个变量执行相同的操作

R - How to perform the same operation on multiple variables

在R中,我经常需要对一组变量做同样的操作。

例如,在我的环境中,我目前有以下数据帧:

df_model1
df_model2
df_model3
df_model4
df_model5

我还有另一个名为 df_obs 的数据框。

我需要做的是将每个 df-model* 数据框合并到 df_obs.

我平时的做法是这样的:

new_df_model1 <- merge(df_obs, df_model1, all=TRUE)
new_df_model2 <- merge(df_obs, df_model2, all=TRUE)
...

等等,显然不太实用。

如何使此操作更具程序化?

您可以在 list.

中使用 Mapmerge df_obsdf_model 数据集
 lst <- Map(`merge`, list(df_obs), 
          mget(paste0('df_model', 1:5)), MoreArgs=list(all=TRUE))

如果列表中的输出数据集需要在全局环境中是单独的 data.frame 个对象,我们可以使用 list2env(但我更愿意将其保留在列表中,因为大多数可以在列表内进行操作)

 names(lst) <- paste('new',paste0('df_model', 1:5), sep="_")
 list2env(lst, envir= .GlobalEnv)

或使用lapply

 lapply(mget(paste0('df_model', 1:5)), merge, x = df_obs, all=TRUE)

您可以使用 for 循环

for(i in 1:5) {
  data <- paste("new_df_model", i, sep = "")
  model <- merge(df_obs, paste("df_model", i, sep = ""), all = TRUE)
  assign(data, model)
}