这可能是不可能的,但无论如何让我试试...
这个函数可以写吗?
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/