我在几个环境中组织了数据框,每个环境都组织在列表中。我现在想从给定的一组数据框名称中搜索每个数据框,确定该名称是否存在于每个环境的特定列表名称中,如果是,则将该对象复制到目标环境的目标列表中。
在下面的示例中,我创建了应应用搜索的 2 个环境 A 和 B,并将环境 Z 作为结果环境。
关于本地环境的内容:A 和 B 在一个或两个列表中都有一些 df。列表名称(I 和 II)指的是某个分析阶段 I 和 II。主列表并不总是都存在于本地环境中,如果在列表 II 中找到数据框,则应停止在本地环境中的搜索(如果没有,则应搜索列表 I)。重要的是,如果重新应用该函数,则应覆盖输出对象。
# Create Environments
Env_A <- new.env(parent = emptyenv())
Env_B <- new.env(parent = emptyenv())
# Environments to apply search ####
Env_list_search <- c(Env_A, Env_B)
# Target Environment
Env_Z <- new.env(parent = emptyenv())
# Create objects to search for (within lists)
Env_A$I$df_A <- "details df_A"
Env_A$I$df_B <- "details df_B"
Env_A$II$df_A <- "details df_A"
Env_B$I$df_C <- "details df_C"
Env_B$II$df_B <- "details df_B"
# Scope of dataframes to search for:
Dataframe_search <- c("df_A","df_C")
我的想法是为搜索创建两个向量:
- 一个具有要搜索的数据框名称
- 一个具有应用搜索的环境名称
上面的搜索应该会导致 Env_Z 显示:II$df_A 和 II$df_C
我的想法是在 for 循环(用于数据框搜索)中创建一个 for 循环(用于环境搜索),但我被困在设置中:
我的问题:
- 如何在对象“Env_list_search”中引用本地环境的名称
- 如何在循环中引用本地环境
- 如何在循环中创建循环
到目前为止我创建的(未完成且有错误):
for(i in Dataframe_search) {
for(j in Env_list_search) {
# When dataframes occurs in list II
if(has_name(j$II,Dataframe_search[[i]]) == T) {
Env_Z$II[[Dataframe_search[[i]] <- j$II$Dataframe_search[[i]]
return(
Env_Z = Env_Z
)
} else {
# When dataframes occurs in list I
if(has_name(j$I,Dataframe_search[[i]]) == T) {
Env_Z$I[[Dataframe_search[[i]] <- j$I$Dataframe_search[[i]]
#)
return(
Env_Z = Env_Z
)
} else {
return()
}
}
}
}