Sacha Viquerat
2010-Mar-16 14:21 UTC
[R] passing columns of tables as a variable to functions
hello! ive come across the following problem: im writing a function to ease the production of maps. as my tables have headers, id like to include an option in my function header to pass these columns to use them inside the evaluation block. the function looks as follows: # maptable #the name of the table containing coordinates and columns for measured values # value: which column of my table to use (e.g. Alt, slope, us, etc... # labels(maptable) # [1] "pos.e" "pos.n" "Alt" "slope" "us" "uus" "lc" make.map<-function (maptable,value) { pos.e<-maptable$pos.e #calling the column directly works pos.n<-maptable$pos.n #calling the column directly works key<-maptable$value #this doesnt work. output: NULL ... rest of function, irrelevant to my question } for example, i call the function by: make.map(elevation,Alt,"Altitude","Sightings") and my interp from akima package denies work, since key is NULL interp(pos.e,pos.n,key,...) have i just missed something? ive browsed the help pages and the archive, looked into crawleys R book but didnt find any solution, though im pretty sure this should be achievable!
Phil Spector
2010-Mar-16 14:57 UTC
[R] passing columns of tables as a variable to functions
Sacha - The "$" notation can only be used when you literally use the name of the column you want. If the name of the column is stored in a variable, you should use this notation: maptable[,value] to refer to the column whose name is stored in "value". - Phil Spector Statistical Computing Facility Department of Statistics UC Berkeley spector at stat.berkeley.edu On Tue, 16 Mar 2010, Sacha Viquerat wrote:> hello! ive come across the following problem: > im writing a function to ease the production of maps. as my tables have > headers, id like to include an option in my function header to pass these > columns to use them inside the evaluation block. the function looks as > follows: > > # maptable #the name of the table containing coordinates and columns for > measured values > # value: which column of my table to use (e.g. Alt, slope, us, etc... > # labels(maptable) > # [1] "pos.e" "pos.n" "Alt" "slope" "us" "uus" "lc" > > make.map<-function (maptable,value) > { > pos.e<-maptable$pos.e #calling the column directly works > pos.n<-maptable$pos.n #calling the column directly works > key<-maptable$value #this doesnt work. output: NULL > ... rest of function, irrelevant to my question > } > > for example, i call the function by: > > make.map(elevation,Alt,"Altitude","Sightings") > > and my interp from akima package denies work, since key is NULL > > interp(pos.e,pos.n,key,...) > > have i just missed something? ive browsed the help pages and the archive, > looked into crawleys R book but didnt find any solution, though im pretty > sure this should be achievable! > > ______________________________________________ > R-help at 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. >