r语言 - 函数访问/赋值给父环境变量给出错误



我想使用这个函数

chan <- function(x) {
  for (i in x)
  {assign(i,sample(1:10,2))} 
  out <- data.frame(sapply(x,get))
  out
}

其中x将是字符串名称列表,此函数将为每个变量名称分配2个随机数,并将其作为数据帧返回。

例如

 x <- c("e","f")

当我使用这个函数时,它给出错误Error in FUN(..., ) : object ... not found

但是如果我不使用这个函数,只是运行这个循环,它是有效的。如:

x <- c("e","f")
for (i in x)
 {assign(i,sample(1:10,1))}
 out <- data.frame(sapply(x,get))

您可以告诉assignget使用pos分配/获取变量时使用的环境(x将在此之后在您的全局环境中)

chan <- function(x) {
    for (i in x) {assign(i,sample(1:10,2), pos=1)}
    out <- data.frame(sapply(x, get, pos=1))
    out
}

或者只是在局部函数环境中赋值

chan <- function(x) {
    e <- environment()
    for (i in x) {
        assign(i,sample(1:10,2), pos=e)
    }
    out <- data.frame(sapply(x, get, pos=e))
    out
}

最新更新