繁体   English   中英

在函数的父环境中分配变量

[英]Assign variable in Parent Environment of a function

看下面的例子,我已经为全局环境分配了变量holder。 但是,我想专门将所有者分配给make.var()的本地环境。 我该怎么做?

make.var<-function(){
  holder<<-rep(NA,10) #assigns global
}

test<-function(){
  make.var()
}

编辑:我认为该术语是经常使用的“调​​用环境”,而不是“父环境”。

您可以使用parent.frame (不要将其与parent.env混淆)来获得调用环境,并使用$[[ (与列表一样))为其分配变量。 或者,您可以使用assign

例如

rm(list = ls())
`%<-1%` <- function(x, y) { p <- parent.frame() ; p[[deparse(substitute(x))]] <- y }
`%<-2%` <- function(x, y) { assign(deparse(substitute(x)), y, env = parent.frame())}

接着:

ls()
a1 %<-1% 111
ls()
a2 %<-2% 222
ls()
a1 ; a2
test1 <- function(x) { print(ls()); t %<-1% x; print(ls()); t }
test2 <- function(x) { print(ls()); t %<-2% x; print(ls()); t }
ls()
test1(333)
ls()
test2(444)
ls()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM