R函数中的全局变量

时间:2010-09-04 04:35:35

标签: variables r function

我创建了一个处理部分数据的函数,如下所示:

a <- "old" 
test <- function (x) {
   assign(x, "new", envir = .GlobalEnv)
} 
test(a)

但是我看不出从“旧”到“新”的变化,我想这是一些“全局变量”,有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:7)

对于assign(x,value),x需要是变量的名称而不是它的值,因此x应该是字符形式:assign("a","new"),并且为了在函数中使用,请尝试:

test <- function (x) 
{
  assign(deparse(substitute(x)), "new", envir = .GlobalEnv)
} 

在您的情况下,您将创建一个名为“old”的变量并为其指定“new”:

> old
[1] "new"

答案 1 :(得分:2)

你可以将你的功能与sapply功能结合起来, 例如:

require (plyr)
b <- sapply (a, test)
b
  old 
"new" 

这样你就可以将你的函数应用到a向量的实际元素 - 正如romunov在他的回答中指出的那样。

另一个例如:

a <- c("old", "oold", "ooold", "oooold")
b <- sapply (a, test)
b
   old   oold  ooold oooold 
 "new"  "new"  "new"  "new"