在 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)
...
等等,这显然不太实用。
如何使此操作更加程序化?
最佳答案
您可以使用Map
至merge
df_obs
和 df_model
list
中的数据集.
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)
关于R - 如何对多个变量执行相同的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30274459/