R 函数是否可能知道其赋值目标的名称?
这可能是不可能的,但让我试试吧 是否可以编写此函数R 函数是否可能知道其赋值目标的名称?,r,assign,R,Assign,这可能是不可能的,但让我试试吧 是否可以编写此函数 Foo<-function(n){ X=runif(n) write.csv(X,file=paste([the name of the assignment target],".csv",sep="") } Foo如果我们稍微修改一下语法,我不相信您可以覆盖。首先定义: Random <- structure(NA,class="Random") "$<-.Random" <- funct
Foo<-function(n){
X=runif(n)
write.csv(X,file=paste([the name of the assignment target],".csv",sep="")
}
Foo如果我们稍微修改一下语法,我不相信您可以覆盖。首先定义:
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我明白了,所以思考的方式是修改(或假装修改)好的Foo
无法知道它的输出会发生什么,所以它无法知道它被分配到的名称(或者它是否被分配到任何东西中)因此,如果您想保留所请求的语法,它不能只是对Foo的修改。
Foo2<-function(n,name){
X=runif(n)
write.csv(X,file=paste(name,".csv",sep=""))
assign(name,X,envir=.GlobalEnv)
}
Foo2(10,"ABC")
ABC<-Foo2(10,"ABC")
Foo <- function(n){
runif(n)
}
`%<-%` <- function(x, y){
xname <- as.character(substitute(x))
assign(xname, y, envir = .GlobalEnv)
write.csv(y, file = paste0(xname, ".csv"))
}
> dir()
character(0)
> ls()
[1] "%<-%" "Foo"
> x %<-% Foo(3)
> x
[1] 0.1838146 0.6785800 0.3758954
> read.csv("x.csv")
X x
1 1 0.1838146
2 2 0.6785800
3 3 0.3758954
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