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
.
中使用 Map
到 merge
df_obs
和 df_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)
}
在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
.
Map
到 merge
df_obs
和 df_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)
}