Heinz Tuechler
2006-Jul-27 09:42 UTC
[R] How to get the name of the first argument in an assignment function?
Dear All! If I pass an object to an assignment function I cannot get it's name by deparse(substitute(argument)), but I get *tmp* and I found no way to get the original name, in the example below it should be "va1". Is there a way? Thanks, Heinz ## example 'fu1<-' <- function(var, value) { print(c(name.of.var=deparse(substitute(var))))} fu1(va1) <- 3 name.of.var "*tmp*" ## desired result: ## name.of.var ## "va1" version _ platform i386-pc-mingw32 arch i386 os mingw32 system i386, mingw32 status Patched major 2 minor 3.1 year 2006 month 07 day 23 svn rev 38687 language R version.string Version 2.3.1 Patched (2006-07-23 r38687)
Gabor Grothendieck
2006-Jul-27 10:10 UTC
[R] How to get the name of the first argument in an assignment function?
If you are willing to write fu2[Var] <- 3 instead of fu2(Var) <- 3 then this workaround may suffice: fu2 <- structure(NA, class = "fu2") "[<-.fu2" <- function(x, ..., value) { print(match.call()[[3]]); fu2 } # test fu2[Var] <- 3 # prints "Var" On 7/27/06, Heinz Tuechler <tuechler at gmx.at> wrote:> Dear All! > > If I pass an object to an assignment function I cannot get it's name by > deparse(substitute(argument)), but I get *tmp* and I found no way to get > the original name, in the example below it should be "va1". > Is there a way? > > Thanks, > > Heinz > > ## example > 'fu1<-' <- function(var, value) { > print(c(name.of.var=deparse(substitute(var))))} > fu1(va1) <- 3 > > name.of.var > "*tmp*" > > ## desired result: > ## name.of.var > ## "va1" > > > > version > _ > platform i386-pc-mingw32 > arch i386 > os mingw32 > system i386, mingw32 > status Patched > major 2 > minor 3.1 > year 2006 > month 07 > day 23 > svn rev 38687 > language R > version.string Version 2.3.1 Patched (2006-07-23 r38687) > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
Heinz Tuechler
2006-Jul-27 13:29 UTC
[R] How to get the name of the first argument in an assignment function?
At 06:10 27.07.2006 -0400, Gabor Grothendieck wrote:>If you are willing to write fu2[Var] <- 3 instead of fu2(Var) <- 3 >then this workaround may suffice: > >fu2 <- structure(NA, class = "fu2") >"[<-.fu2" <- function(x, ..., value) { print(match.call()[[3]]); fu2 } > ># test >fu2[Var] <- 3 # prints "Var" > >Thank you, Gabor for your response. My example was very reduced, just to show the point, but in the way I would like to use it, probably your solution may be difficult to apply. Seems, I have to accept that I cannot solve it. Thanks again, Heinz>On 7/27/06, Heinz Tuechler <tuechler at gmx.at> wrote: >> Dear All! >> >> If I pass an object to an assignment function I cannot get it's name by >> deparse(substitute(argument)), but I get *tmp* and I found no way to get >> the original name, in the example below it should be "va1". >> Is there a way? >> >> Thanks, >> >> Heinz >> >> ## example >> 'fu1<-' <- function(var, value) { >> print(c(name.of.var=deparse(substitute(var))))} >> fu1(va1) <- 3 >> >> name.of.var >> "*tmp*" >> >> ## desired result: >> ## name.of.var >> ## "va1" >> >> >> >> version >> _ >> platform i386-pc-mingw32 >> arch i386 >> os mingw32 >> system i386, mingw32 >> status Patched >> major 2 >> minor 3.1 >> year 2006 >> month 07 >> day 23 >> svn rev 38687 >> language R >> version.string Version 2.3.1 Patched (2006-07-23 r38687) >> >> ______________________________________________ >> R-help at stat.math.ethz.ch mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html>> and provide commented, minimal, self-contained, reproducible code. >> > >