[Rd] prevent reassignment of function names

Tim Bergsma timb at metrumrg.com
Thu Apr 6 21:46:44 CEST 2006


Hi.

I'm trying to find a systematic way to prevent assignment to names of 
existing functions.  I've tried reassigning to the assignment operator, 
with mixed results.  The function definition for "<-" below works as 
hoped for the demonstrated assignments to a and c.  However, for the 
assignment based on the test function, it appears that the formal 
argument is not visible.  Any suggestions?

Thanks,

Tim.

-------------------------------------------------------------
rm(list=ls())
"<-" <- function(x,value){
	try(assign("y",x), silent=TRUE)
	if (exists("y", mode="function"))
		stop("assignment to an existing function")
	else  eval(substitute(.Primitive("<-")(x, value)),sys.frame(sys.parent(2)))
}

MYLEN <- function(infile){
	LEN <- nchar(infile)
	return(LEN)	
}
a <- 3
c <- 3
#Error in c <- 3 : assignment to an existing function
d <- MYLEN("word")
#Error in nchar(infile) : object "infile" not found



More information about the R-devel mailing list