首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个对象返回到不同的(父)环境。

将多个对象返回到不同的(父)环境。
EN

Stack Overflow用户
提问于 2020-02-17 08:25:40
回答 1查看 44关注 0票数 1

我正在编写一个函数,其中我将返回几个对象。通常的方法是将它们存储为一个列表并返回列表。但是,这意味着我必须取消列表以访问这些对象。

是否有办法将它们存储在函数本身之外的不同环境中?

我想我将直接在我的代码或其他函数中使用这个函数。这样做的想法是将这些对象推送到直接父环境,因此如果我在另一个函数中执行此函数,则为一个函数,如果我在代码中内联执行该函数,则为全局环境。

最好的

编辑:嗨,我添加了一个虚拟列表。它实际上是我正在使用的数据。第一个元素包含修改后的数据集,该函数和向量包含添加的列名,我在代码中进一步使用了这些名称。首先,我问这个问题的原因是,我想提取数据集和向量,如果它们已经存在,它们就替换原始数据集或向量,或者如果它们不存在,就创建它们。

我很可能会把它称为一个函数,它将进一步使用它们。我通常会用循环来完成这个任务,但是我更愿意使用一个函数来完成这个任务,我可以随时调用这个函数。

你会怎么做?我试了一下,但从未达到我所追求的目标。

代码语言:javascript
复制
list(dummy2 = structure(list(interaction = c("Rutilus rutilus<-Hydrachnidia", 
"Rutilus rutilus<-Hydrachnidia", "Rutilus rutilus<-Hydrachnidia", 
"Rutilus rutilus<-Hydrachnidia", "Rutilus rutilus<-Hydrachnidia", 
"Rutilus rutilus<-Hydrachnidia"), PREDATOR = c("Rutilus rutilus", 
"Rutilus rutilus", "Rutilus rutilus", "Rutilus rutilus", "Rutilus rutilus", 
"Rutilus rutilus"), PREY = c("Hydrachnidia", "Hydrachnidia", 
"Hydrachnidia", "Hydrachnidia", "Hydrachnidia", "Hydrachnidia"
), interaction_type = c("eats", "eats", "preysOn", "preysOn", 
"preysOn", "eats"), source = c("Globi", "Globi", "Globi", "Globi", 
"Globi", "Globi"), pred_prey_lifestage = c("NA<-NA", "larvae<-larvae", 
"larvae<-larvae", "larvae<-NA", "NA<-NA", "NA<-NA"), interaction_lifestage = c("NA<-NA", 
"larvae<-larvae", "larvae<-larvae", "larvae<-NA", "NA<-NA", "NA<-NA"
), pred_lifestage = c(NA, "larvae", "larvae", "larvae", NA, NA
), prey_lifestage = c(NA, "larvae", "larvae", NA, NA, NA), lat = c(NA_character_, 
NA_character_, NA_character_, NA_character_, NA_character_, NA_character_
), lon = c(NA_character_, NA_character_, NA_character_, NA_character_, 
NA_character_, NA_character_), ref = c("Rowan Dunn, D. (1954). The Feeding Habits of some of the Fishes and some Members of the Bottom Fauna of Llyn Tegid (Bala Lake), Merionethshire. Journal of Animal Ecology, 23(2), 224�233.", 
"Northcott, D. S., The role of aquatic macrophytes in the availabillty of food for young fish, 1981, PhD thesis, City of London Polytechnic, UK", 
"Northcott, D. S., The role of aquatic macrophytes in the availabillty of food for young fish, 1981, PhD thesis, City of London Polytechnic, UK", 
"Northcott, D. S., The role of aquatic macrophytes in the availabillty of food for young fish, 1981, PhD thesis, City of London Polytechnic, UK", 
"Northcott, D. S., The role of aquatic macrophytes in the availabillty of food for young fish, 1981, PhD thesis, City of London Polytechnic, UK", 
"Northcott, D. S., The role of aquatic macrophytes in the availabillty of food for young fish, 1981, PhD thesis, City of London Polytechnic, UK"
), data_provider = c("Gray C, Ma A, Perkins D, Hudson L, Figueroa D, Woodward G (2015). Database of trophic interactions. Zenodo. https://doi.org/10.5281/zenodo.13751. Accessed at <https://github.com/globalbioticinteractions/gray2015/archive/95bfd96cc46e5d58482fd2bdad0677eeb74ba0f4.zip> on 16 Feb 2020.", 
"Gray C, Ma A, Perkins D, Hudson L, Figueroa D, Woodward G (2015). Database of trophic interactions. Zenodo. https://doi.org/10.5281/zenodo.13751. Accessed at <https://github.com/globalbioticinteractions/gray2015/archive/95bfd96cc46e5d58482fd2bdad0677eeb74ba0f4.zip> on 16 Feb 2020.", 
"Gray C, Ma A, Perkins D, Hudson L, Figueroa D, Woodward G (2015). Database of trophic interactions. Zenodo. https://doi.org/10.5281/zenodo.13751. Accessed at <https://github.com/globalbioticinteractions/gray2015/archive/95bfd96cc46e5d58482fd2bdad0677eeb74ba0f4.zip> on 16 Feb 2020.", 
"Gray C, Ma A, Perkins D, Hudson L, Figueroa D, Woodward G (2015). Database of trophic interactions. Zenodo. https://doi.org/10.5281/zenodo.13751. Accessed at <https://github.com/globalbioticinteractions/gray2015/archive/95bfd96cc46e5d58482fd2bdad0677eeb74ba0f4.zip> on 16 Feb 2020.", 
"Gray, C., Ma, A., Perkins, D., Hudson, L., Figueroa, D., & Woodward, G. (2015). Database of trophic interactions [Data set]. Zenodo. http://doi.org/10.5281/zenodo.13751. Accessed at <https://zenodo.org/record/13751/files/trophic.links.2014-11-10.csv> on 16 Feb 2020.", 
"Gray, C., Ma, A., Perkins, D., Hudson, L., Figueroa, D., & Woodward, G. (2015). Database of trophic interactions [Data set]. Zenodo. http://doi.org/10.5281/zenodo.13751. Accessed at <https://zenodo.org/record/13751/files/trophic.links.2014-11-10.csv> on 16 Feb 2020."
)), row.names = c(351L, 361L, 362L, 366L, 376L, 377L), class = "data.frame"), 
    dummy2.addi = c("interaction", "interaction_lifestage"))
EN

回答 1

Stack Overflow用户

发布于 2020-02-17 08:50:18

是的,有可能这样做:

代码语言:javascript
复制
assign(x, value, pos = -1, envir = as.environment(pos),
       inherits = FALSE, immediate = TRUE)

另一种可能是

代码语言:javascript
复制
foo <- function(){
    someVariableInParentEnvironment <<- 5
}

assign()有可能写入任何您想要的环境。

然而,

你在做那件事之前应该好好想想。我建议不要这样做,除非在只有您使用的小脚本中使用小函数。问题是,您忽略了哪个变量存在。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60258433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档