Hello, I would like to be able to compose an expression using some of the arguments I give to a function, that is assuming I have a list such as: my.list<-list(A=1:3,B=c("Brave", "new", "world")) and a function printComponent<-function(component){ if (component=="A"||component=="B"){ my.expression<-paste("my.list",component,sep="$") print(my.expression)} else{cat("Wrong argument, must be A or B")} } I would like that a call "printComponent("A")" to be equivalent to calling> my.list$A[1] 1 2 3 but I only obtain> printComponent("A")[1] "my.list$A" I presume I must evaluate it somehow but I really can't find the instruction in the manuals (I would also appreciate to know where should I have looked at) Thanks for the help ---------------------------------------------------------- Dr. Alex Sánchez Departament d'EstadÃstica U.B. Telf: 34 934021590 Fax: 34 93 4111733 e-mail : asanchez@ub.edu ----------------------------------------------------------- [[alternative HTML version deleted]]
Alex Sanchez wrote:> Hello, > > I would like to be able to compose an expression using some of the arguments I give to a function, that is assuming I have a list such as: > my.list<-list(A=1:3,B=c("Brave", "new", "world")) > and a function > printComponent<-function(component){ > if (component=="A"||component=="B"){ > my.expression<-paste("my.list",component,sep="$") > print(my.expression)} > else{cat("Wrong argument, must be A or B")} > } > > I would like that a call "printComponent("A")" to be equivalent to calling > >>my.list$AIt's much simpler! Use the [[ as in: printComponent <- function(component){ my.list[[component]] } Uwe Ligges> [1] 1 2 3 > but I only obtain > >>printComponent("A") > > [1] "my.list$A" > > I presume I must evaluate it somehow but I really can't find the instruction in the manuals (I would also appreciate to know where should I have looked at) > > Thanks for the help > > ---------------------------------------------------------- > Dr. Alex S?nchez > Departament d'Estad?stica U.B. > Telf: 34 934021590 > Fax: 34 93 4111733 > e-mail : asanchez at ub.edu > ----------------------------------------------------------- > > [[alternative HTML version deleted]] > > ______________________________________________ > 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
Hi Alex, you could use something like this: printComponent <- function(component, lis){ if(component %in% names(lis)) return(lis[component]) else cat(component, "in not an element of", substitute(lis), "\n") } ############## my.list <- list(A=1:3, B=c("Brave", "new", "world")) printComponent("A", my.list) printComponent("C", my.list) I hope it helps. Best, Dimitris ---- Dimitris Rizopoulos Ph.D. Student Biostatistical Centre School of Public Health Catholic University of Leuven Address: Kapucijnenvoer 35, Leuven, Belgium Tel: +32/16/336899 Fax: +32/16/337015 Web: http://www.med.kuleuven.ac.be/biostat http://www.student.kuleuven.ac.be/~m0390867/dimitris.htm ----- Original Message ----- From: "Alex Sanchez" <asanchez at ub.edu> To: <r-help at stat.math.ethz.ch> Sent: Wednesday, January 26, 2005 10:54 AM Subject: [R] string evaluation Hello, I would like to be able to compose an expression using some of the arguments I give to a function, that is assuming I have a list such as: my.list<-list(A=1:3,B=c("Brave", "new", "world")) and a function printComponent<-function(component){ if (component=="A"||component=="B"){ my.expression<-paste("my.list",component,sep="$") print(my.expression)} else{cat("Wrong argument, must be A or B")} } I would like that a call "printComponent("A")" to be equivalent to calling> my.list$A[1] 1 2 3 but I only obtain> printComponent("A")[1] "my.list$A" I presume I must evaluate it somehow but I really can't find the instruction in the manuals (I would also appreciate to know where should I have looked at) Thanks for the help ---------------------------------------------------------- Dr. Alex S?nchez Departament d'Estad?stica U.B. Telf: 34 934021590 Fax: 34 93 4111733 e-mail : asanchez at ub.edu ----------------------------------------------------------- [[alternative HTML version deleted]] ______________________________________________ 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