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