I am attempting to write a function that is flexible enough to respond to the user providing a formula (with a data= argument) or not (similar to plot(x,y) versus plot(y~x,data=data)). I have found a method to work with this in a simple case but am having trouble determining how to "find" a variable from within the data= argument that is not part of the formula. The following illustrates my problem ... # an illustrative function -- I know that plotrix::thigmophobe.labels() does what this function does myplot <- function(x,y=NULL,data=NULL,label=NULL) { if (class(x)=="formula") { mf <- model.frame(x,data=data) x <- mf[,2] y <- mf[,1] } if (is.null(y)) stop("Y-axis variable is missing") plot(x,y) if (!is.null(label)) text(x,y,label) } # dummy data df <- data.frame(x=runif(10),y=runif(10),grp=factor(rep(c("Yes","No"),each=5))) # both calls work as expected with(df,myplot(x,y)) myplot(y~x,data=df) # only first works as I would hope with(df,myplot(x,y,label=grp)) myplot(y~x,data=df,label=grp) # this works but is clumsy myplot(y~x,data=df,label=df$grp) Any help with how to make this function recognize the "grp" variable in "df" without having to type "df$grp" when supplying it to the "label=" argument would be greatly appreciated. Thank you in advance. -- View this message in context: http://www.nabble.com/Working-with-and-without-formula-in-function-tp22874005p22874005.html Sent from the R help mailing list archive at Nabble.com.