将对象从环境范围复制到目标环境 R

问题描述

我在多个环境中组织了数据框,每个环境都组织在列表中。我现在想从一组给定的数据帧名称搜索每个数据帧,确定该名称是否存在于每个环境的特定列表名称中,如果是,则将该对象复制到目标环境的目标列表中。>

在下面的示例中,我创建了 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 循环(用于环境搜索),但我被困在设置中:

我的问题:

  1. 如何在对象“Env_list_search”中引用本地环境的名称
  2. 如何在循环中引用本地环境
  3. 如何在循环内创建循环

我迄今为止创建的内容(未完成且有错误):

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()
      }
    }
  }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...