符号

当在R中定义一个变量时,实际上就是在环境中将一个符号赋给一个值

x <- 1

实际上就是在全局环境中将符号x赋给一个长度为1,值为1的向量对象

当R解释器对表达式求值时,它会处理所有的符号

如果将若干个符号组合成一个对象,R会解析成该对象的每个符号

> x <- 1
> y <- 2
> z <- 3
> 
> (v <- c(x, y, z))
[1] 1 2 3
> 
> #由于v已定义,更改x的值并不会使v的值也相应变化 
> x <- 10
> v
[1] 1 2 3

可以推迟表达式的求值,使得符号不会立即被解析

> x <- 1
> y <- 2
> z <- 3
> 
> v <- quote(c(x, y, z))
> eval(v)
[1] 1 2 3
> 
> x <- 5
> eval(v)
[1] 5 2 3

使用delayedAssign函数创建一个允诺对象,使得变量只在初次用到时才会被求值

> x <- 1
> y <- 2
> z <- 3
> delayedAssign("v", c(x, y, z))
> x <- 5
> v
[1] 5 2 3

在包中使用允诺对象可以让用户使用对象而无须将其加载到内存中

不过无法判断一个对象是否是允诺对象,也无从知道它是在哪个环境中创建的

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。