[R] list() assigning the same value to two items

Gabor Grothendieck ggrothendieck at gmail.com
Mon Jun 21 18:33:09 CEST 2010

On Mon, Jun 21, 2010 at 6:58 AM, Thaler, Thorn, LAUSANNE, Applied
Mathematics <Thorn.Thaler at rdls.nestle.com> wrote:
> Thanks, works as expected. But maybe I've to be a bit more clear about the reason why I'd like to have such a construct.
> In lattice you can define some parameters by passing a named list to par.settings. Suppose I want to superpose two lines and use colors different from the default:
> xyplot(1:10~c(1:5,1:5), type="o", groups=rep(1:2,each=5), par.settings=list(superpose.line=list(col=1:2), superpose.symbol=list(col=1:2)))
> I have to specify the same setting for superpose.line and superpose.symbol. If I'd use your proposition, I've to hardcode the respective item names. It is still an academic question, for there are thousands of ways to solve this issue, but I was just curious whether it is possible to find an one-liner without the need of specifying any temp variable.

Try this variation of my.transform that I had posted here:

List <- function(..., L = list()) {
       f <- function(){}
       formals(f) <- eval(substitute(as.pairlist(c(alist(...), L))))
       body(f) <- substitute(modifyList(L, list(...)))

xyplot(1:10~c(1:5,1:5), type = "o", groups = rep(1:2,each=5),
 par.settings = List(
   superpose.line = list(col = 1:2),
   superpose.symbol = superpose.line))

More information about the R-help mailing list