首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内部的(data,expr)构造使其参数不可见?

函数内部的(data,expr)构造使其参数不可见?
EN

Stack Overflow用户
提问于 2014-04-04 14:54:23
回答 1查看 45关注 0票数 0

我试图将一个环境传递到一个函数中,但似乎无法使用带有‘’构造的来使用它。在以下守则中:

代码语言:javascript
复制
f <- function(i,env)with(env, i+2*j)

g <- function() {
  env <- new.env()
  env$j <- 3
  f(10, env)
}

g()

我本来希望在中使用‘’,我是可见的,所以g()应该返回16。

代码语言:javascript
复制
Error in eval(expr, envir, enclos) : object 'i' not found

我注意到导演说

如果“数据”已经是一个环境,那么它将与其现有的父环境一起使用,

但这似乎是完全短路,所有的论点的一个函数。为什么这会是有用的行为呢?

(这方面的背景是,我正在清理一些具有较大全局变量的旧代码;我正在尝试将其填充到一个大的环境中,然后传递出去,我希望我不需要重写以前的全局变量的所有读/写)。

任何帮助都很感激。

EN

回答 1

Stack Overflow用户

发布于 2014-04-04 16:20:27

i是在f环境中,而不是在env环境中。你得去做

代码语言:javascript
复制
f <- function(i,env) with(env,j)*2+i

g <- function() {
  env <- new.env()
  env$j <- 3
  f(10, env)
}

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

https://stackoverflow.com/questions/22866140

复制
相关文章

相似问题

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