R - 如何对多个变量

时间:2015-05-16 10:23:09

标签: r variables operation

在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)
...

等等,这显然不太实用。

如何让这项操作更具编程性?

2 个答案:

答案 0 :(得分:3)

您可以在Map中使用mergedf_obs df_modellist个数据集。

 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)

答案 1 :(得分:1)

您可以使用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)
}