找回密码
 注册
查看: 7003|回复: 0

R语言:eval()函数中文帮助文档(中英文对照)

[复制链接]
发表于 2012-2-16 20:06:42 | 显示全部楼层 |阅读模式
eval(base)
eval()所属R语言包:base

                                        Evaluate an (Unevaluated) Expression
                                         评价一个(未计算)的表达

                                         译者:生物统计家园网 机器人LoveR

描述----------Description----------

Evaluate an R expression in a specified environment.
在指定的环境评估R表达。


用法----------Usage----------


eval(expr, envir = parent.frame(),
           enclos = if(is.list(envir) || is.pairlist(envir))
                       parent.frame() else baseenv())
evalq(expr, envir, enclos)
eval.parent(expr, n = 1)
local(expr, envir = new.env())



参数----------Arguments----------

参数:expr
an object to be evaluated.  See "Details".
一个对象进行评估。见“详细资料”。


参数:envir
the environment in which expr is to be evaluated.  May also be NULL, a list, a data frame, a pairlist or an integer as specified to sys.call.
environment中expr进行评估。也可能是NULL,列表,数据框,pairlist或指定sys.call整数。


参数:enclos
Relevant when envir is a (pair)list or a data frame. Specifies the enclosure, i.e., where R looks for objects not found in envir.  This can be NULL (interpreted as the base package environment, baseenv()) or an environment.
有关envir是一个(对)列表或一个数据框。指定的外壳,即,其中R为没有envir对象。这可能是NULL或环境(基本包环境,baseenv()解释)。


参数:n
number of parent generations to go back
父代回去


Details

详情----------Details----------

eval evaluates the expr argument in the environment specified by envir and returns the computed value. If envir is not specified, then the default is parent.frame() (the environment where the call to eval was made).
eval评估在expr指定环境envir参数,并返回计算值。如果envir没有被指定,则默认为parent.frame()(eval呼叫了环境)。

Objects to be evaluated can be of types call or expression or name (when the name is looked up in the current scope and its binding is evaluated), a promise or any of the basic types such as vectors, functions and environments (which are returned unchanged).
被评估的对象可以是类型call或expression或名称(名称在当前范围内抬头,并评估其约束力),承诺或任何基本类型,如向量,功能和环境(返回不变)。

The evalq form is equivalent to eval(quote(expr), ...). eval evaluates its first argument in the current scope before passing it to the evaluator: evalq avoids this.
evalq的形式是相当于eval(quote(expr), ...)。 eval评估之前,将它传递给评估其在当前范围内的第一个参数:evalq避免。

eval.parent(expr, n) is a shorthand for eval(expr, parent.frame(n)).
eval.parent(expr, n)是eval(expr, parent.frame(n))的简写。

If envir is a list (such as a data frame) or pairlist, it is copied into a temporary environment (with enclosure enclos), and the temporary environment is used for evaluation.  So if expr changes any of the components named in the (pair)list, the changes are lost.
如果envir是一个列表(如数据框)或pairlist,它被复制到一个临时的环境(与外壳enclos),临时的环境评价。因此,如果expr改变任何组件(对)列表命名,更改都将丢失。

If envir is NULL it is interpreted as an empty list so no values could be found in envir and look-up goes directly to enclos.
如果envir是NULL它解释为一个空列表,所以没有值,可以发现在envir和直接查找到enclos。

local evaluates an expression in a local environment.  It is equivalent to evalq except that its default argument creates a new, empty environment.  This is useful to create anonymous recursive functions and as a kind of limited namespace feature since variables defined in the environment are not visible from the outside.
local评估在本地环境中的表现。它相当于evalq,但其默认参数创建一个新的,空的环境。这是非常有用的创建匿名递归函数和作为一种有限的,因为在环境中定义的变量命名空间功能,是不是从外面可见。


值----------Value----------

The result of evaluating the object: for an expression vector this is the result of evaluating the last element.
评估对象的结果:表达向量,这是最后一个元素的评估结果。


注意----------Note----------

Due to the difference in scoping rules, there are some differences between R and S in this area.  In particular, the default enclosure in S is the global environment.
由于作用域规则的差异,也有一些在这一领域的R和S之间的差异。特别是,在S的默认外壳是全球环境。

When evaluating expressions in a data frame that has been passed as an argument to a function, the relevant enclosure is often the caller's environment, i.e., one needs eval(x, data, parent.frame()).
评估已作为参数传递给函数的一个数据框中的表达式时,有关外壳往往是呼叫者的环境,即需要eval(x, data, parent.frame())。


参考文献----------References----------

The New S Language. Wadsworth &amp; Brooks/Cole.  (<code>eval</code> only.)

参见----------See Also----------

expression, quote, sys.frame, parent.frame, environment.
expression,quote,sys.frame,parent.frame,environment。

Further, force to force evaluation, typically of function arguments.
此外,force强制评估,通常的函数的参数。


举例----------Examples----------


eval(2 ^ 2 ^ 3)
mEx <- expression(2^2^3); mEx; 1 + eval(mEx)
eval({ xx <- pi; xx^2}) ; xx

a &lt;- 3 ; aa &lt;- 4 ; evalq(evalq(a+b+aa, list(a=1)), list(b=5)) # == 10[== 10]
a &lt;- 3 ; aa &lt;- 4 ; evalq(evalq(a+b+aa, -1), list(b=5))        # == 12[== 12]

ev <- function() {
   e1 <- parent.frame()
   ## Evaluate a in e1[#在E1评估1]
   aa <- eval(expression(a),e1)
   ## evaluate the expression bound to a in e1[#评估E1绑定到表达式]
   a <- expression(x+y)
   list(aa = aa, eval = eval(a, e1))
}
tst.ev <- function(a = 7) { x <- pi; y <- 1; ev() }
tst.ev()#-&gt; aa : 7,  eval : 4.14[ - > AA:7,EVAL:4.14]

a <- list(a=3, b=4)
with(a, a &lt;- 5) # alters the copy of a from the list, discarded.[改变从列表中的一个副本,丢弃。]

##[#]
## Example of evalq()[#的evalq为例()]
##[#]

N <- 3
env <- new.env()
assign("N", 27, envir=env)
## this version changes the visible copy of N only, since the argument[#这个版本改变参数n仅可见的副本,因为]
## passed to eval is '4'.[#传递给eval是4。]
eval(N <- 4, env)
N
get("N", envir=env)
## this version does the assignment in env, and changes N only there.[#这个版本确实env中的分配,改变n仅在那里。]
evalq(N <- 5, env)
N
get("N", envir=env)


##[#]
## Uses of local()[#使用(本地)]
##[#]

# Mutually recursive.[相互递归。]
# gg gets value of last assignment, an anonymous version of f.[GG得到最后分配值,f的匿名版本。]

gg <- local({
    k <- function(y)f(y)
    f <- function(x) if(x) x*k(x-1) else 1
})
gg(10)
sapply(1:5, gg)

# Nesting locals: a is private storage accessible to k[筑巢当地人:一个是私人存储访问到k]
gg <- local({
    k <- local({
        a <- 1
        function(y){print(a <<- a+1);f(y)}
    })
    f <- function(x) if(x) x*k(x-1) else 1
})
sapply(1:5, gg)

ls(envir=environment(gg))
ls(envir=environment(get("k", envir=environment(gg))))

转载请注明:出自 生物统计家园网(http://www.biostatistic.net)。


注:
注1:为了方便大家学习,本文档为生物统计家园网机器人LoveR翻译而成,仅供个人R语言学习参考使用,生物统计家园保留版权。
注2:由于是机器人自动翻译,难免有不准确之处,使用时仔细对照中、英文内容进行反复理解,可以帮助R语言的学习。
注3:如遇到不准确之处,请在本贴的后面进行回帖,我们会逐渐进行修订。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2025-1-24 16:39 , Processed in 0.024229 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表