r - 函数是否有可能知道其赋值目标的名称?

标签 r assign

这可能是不可能的,但无论如何让我试试...

这个函数可以写吗?

Foo<-function(n){
     X=runif(n)
     write.csv(X,file=paste([the name of the assignment target],".csv",sep="")
    }

所以当我这样做的时候

ABC<-Foo(10)

它生成 10 个随机数并将其存储到 R 对象 ABC 并写入一个名为“ABC.csv”的 csv 文件?

我知道你可以这样做:

Foo2<-function(n,name){
        X=runif(n)
        write.csv(X,file=paste(name,".csv",sep=""))
        assign(name,X,envir=.GlobalEnv)
      }
Foo2(10,"ABC")

但我想使用箭头运算符 <- 因为它是 R 中的常用语法。所以 Foo2 确实不完美。当然还有

ABC<-Foo2(10,"ABC")

没有意义,因为它意味着输入两次名称。

最佳答案

如果我们稍微改变一下语法,我们就可以做到。首先定义:

Random <- structure(NA,class="Random")
"$<-.Random" <- function(x, name, value) {
    X <- runif(value)
    write.csv(X, file = paste0(name, ".csv"))
    assign(name, X, parent.frame())
    invisible(x)
}

这是这样使用的:

Random$abc <- 3

之后 abc 将是生成数字的向量,并且将写出一个 abc.csv 文件。

关于r - 函数是否有可能知道其赋值目标的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20040193/

相关文章:

r - 如何执行训练、测试和验证集来进行预测

r - R 中的错​​误处理和记录

r - 使用 R 将一个向量的元素分配给另一个向量的元素

python - 重新分配 Pandas df 中的列值

Azure 经典与新门户 : how do I assign a user to an API in the NEW portal?

r - R 中的精确匹配和 GenMatch

r - 在可响应的可扩展行中使用图像

r - 几何平滑: what is its meaning (why is it lower than the mean?)

c - matlab中C数组的思想