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