Fuchs Ira wrote: > I'm sure there is a more general way to ask this question but how do > you use the elements of a character vector as names of objects in an > expression? > For example, say you have: > > a = c(1,3,5,7) > b = c(2,4,6,8) > > n=c("a","b") > > and you want to use the names a and b in a function (e.g. sum) > > sum(eval(as.name(n[1])),eval(as.name(n[2]))) > > works but > > what is a simpler way to effect this level of indirection? >
in this particular case, the simplest i can come up with is: sum(sapply(n, get)) you may want to avoid this sort of indirection by using lists with named components: d = list(a=c(1,3,5,7), b=c(2,4,6,8)) sum(unlist(d)) with(d, sum(a+b)) sum(d[['a']], d[['b']]) sum(sapply(n, function(v) d[[v]])) and so on. vQ ______________________________________________ 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.