David, I must not have understood your suggestion. The code below does not work:
# create data frame x<-1:10 y <- x+rnorm(10) z <- 11:20 data <- data.frame(x,y,z) data learnfn <- function(data,column) { print(data[[column]]) } # work on the "x" column learnfn(data,x) work on the "y" column learnfn(data,y) John David Sorkin M.D., Ph.D. Chief, Biostatistics and Informatics University of Maryland School of Medicine Division of Gerontology Baltimore VA Medical Center 10 North Greene Street GRECC (BT/18/GR) Baltimore, MD 21201-1524 (Phone) 410-605-7119 (Fax) 410-605-7913 (Please call phone number above prior to faxing)>>> David Winsemius <dwinsem...@comcast.net> 12/24/2010 4:48 PM >>> On Dec 24, 2010, at 4:29 PM, John Sorkin wrote: > I am trying to learn more about how to write functions. I would like > to pass a data frame (or matrix) and depending on the parameters > passed to the function work with a given column of the data frame or > matrix. My function, learnfn is given below as are two calls to the > function. The first call is an attempt to print the x column from > the data frame, the second call is an attempt to print the y column. > I hope someone can modify my function so it works. > Thank you, > John > > # create data frame > x<-1:10 > y <- x+rnorm(10) > z <- 11:20 > data <- data.frame(x,y,z) > data > > > learnfn <- function(data,column) { > print(data) > #data[,"column"] # there is no column named "column" # Try: data[column] # or data[[column]] # the column object will have a character value and either "[" or "[[" will evaluate an unquoted argument. > } > > # work on the "x" column > learnfn(data,x) # and there is no x ... well there is, but if you passed a vector that evaluated to 1:10 to "[" you would be asking for the first 10 columns, and "[[" would throw an error. # Try: learnfn(data, "x") You seem to be reversing the expected conventions of quoting or not- quoting. When you invoke a function you need to send it a specific value but when you are writing the function you need to leave values open. -- David. > > # work on the "y" column > learnfn(data,y) > > > John David Sorkin M.D., Ph.D. > Chief, Biostatistics and Informatics > University of Maryland School of Medicine Division of Gerontology > Baltimore VA Medical Center > 10 North Greene Street > GRECC (BT/18/GR) > Baltimore, MD 21201-1524 > (Phone) 410-605-7119 > (Fax) 410-605-7913 (Please call phone number above prior to faxing) > > Confidentiality Statement: > This email message, including any attachments, is for ...{{dropped:21}} ______________________________________________ R-help@r-project.org 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.