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

将对象从环境范围复制到目标环境R,r,nested-for-loop,R,Nested For Loop,我在多个环境中组织了数据帧,每个环境都以列表的形式组织。现在,我想从一组给定的数据帧名称中搜索每个数据帧,确定该名称是否存在于每个环境的特定列表名称中,如果存在,则将该对象复制到目标环境的目标列表中 在下面的示例中,我创建了两个环境A和B,搜索应应用于其中,环境Z作为结果环境 关于本地环境的内容:A和B在一个或两个列表中都有一些df。列表名称(I和II)指某一分析阶段I和II。主列表并不总是同时出现在本地环境中,如果在列表II中找到数据帧,则本地环境中的搜索应停止(如果没有,则应搜索列表I)。

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

在下面的示例中,我创建了两个环境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")


#创建环境

嗯…我不知道我是否理解你的问题。您能否共享共享数据的预期输出?预期输出是搜索集中命名的数据帧(Dataframe_search)在目标环境(Env_Z)中的数据帧概述。本地环境(Env_A、Env_B)目前有很多数据帧和其他对象,我想将一些关键数据帧引入一种汇总环境(Env_Z)。因此Env_Z显示在seach列表(Env_list_search)中命名的本地环境中找到的数据帧的副本。然后,由于本地环境被组织在两个列表(命名为I和II)中,并且数据帧可以出现在其中一个或两个列表中,因此需要应用一条规则,从列表II(如果存在)获取数据帧,或者从列表I(如果存在)获取数据帧。我希望我已经解释得足够清楚了。我认为当环境被“character”值引用时,您应该尝试学习处理环境的正确函数。例如,
class('Env_A')[1]“character”
错误<代码>类(get('Env_A'))#[1]“环境”
正确。除了查看
?get
,您还应该查看
?apropos
。您可以在
rlang
软件包中找到有用的实用程序函数。在创作tidyverse部分的过程中,哈德利需要自学,然后再教他的助手,R语言如何代表和表达不同层次的抽象。我还提名了这个问题,因为它代表结束。它似乎太宽了。我认为我上面的评论表明,有许多误解需要澄清,这似乎是一个要求完成一个多层次的项目大纲,其中许多组件还没有在代码中创建。它还使用base R安装中不存在的功能,例如,
has_name
Hmmm…我不确定是否理解您的问题。您能否共享共享数据的预期输出?预期输出是搜索集中命名的数据帧(Dataframe_search)在目标环境(Env_Z)中的数据帧概述。本地环境(Env_A、Env_B)目前有很多数据帧和其他对象,我想将一些关键数据帧引入一种汇总环境(Env_Z)。因此Env_Z显示在seach列表(Env_list_search)中命名的本地环境中找到的数据帧的副本。然后,由于本地环境被组织在两个列表(命名为I和II)中,并且数据帧可以出现在其中一个或两个列表中,因此需要应用一条规则,从列表II(如果存在)获取数据帧,或者从列表I(如果存在)获取数据帧。我希望我已经解释得足够清楚了。我认为当环境被“character”值引用时,您应该尝试学习处理环境的正确函数。例如,
class('Env_A')[1]“character”
错误<代码>类(get('Env_A'))#[1]“环境”正确。除了查看
?get
,您还应该查看
?apropos
。您可以在
rlang
软件包中找到有用的实用程序函数。在创作tidyverse部分的过程中,哈德利需要自学,然后再教他的助手,R语言如何代表和表达不同层次的抽象。我还提名了这个问题,因为它代表结束。它似乎太宽了。我认为我上面的评论表明,有许多误解需要澄清,这似乎是一个要求完成一个多层次的项目大纲,其中许多组件还没有在代码中创建。它还使用基本R安装中不存在的功能,例如
具有\u name
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()
      }
    }
  }
}