Continuing the annnoying tradition of partial quotes: I don't think there is an easy way to achieve: > y[,2:3,1,drop=FALSE] , , c1 b2 b3 a1 3 5 a2 4 6 using do.call("[") without explicitly specify the indices for that "missing" dimension, i.e.
> y[seq(length=dim(y)[1]),2:3,1,drop=FALSE] You can build the 2nd argument to do.call with alist() instead of list() to send missing arguments to the function given as the 1st argument. E.g. to extract the first row, as a row matrix, from the matrix state.x77 you usually do > state.x77[1, , drop=FALSE] Population Income Illiteracy Life Exp Murder HS Grad Frost Area Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708 and here are some unsucessful attempts to do it with do.call("[",...) using list()): > do.call("[", list(state.x77, 1, ,drop=FALSE)) # bad Error in list(state.x77, 1, , drop = FALSE) : argument 3 is empty > do.call("[", list(state.x77, 1, drop=FALSE)) [1] 3615 and a to do it with alist: > do.call("[", alist(state.x77, 1, ,drop=FALSE)) Population Income Illiteracy Life Exp Murder HS Grad Frost Area Alabama 3615 3624 2.1 69.05 15.1 41.3 20 50708 alist() produces a list that you can use c() and subscripting on to add or modify arguments. It is usually better to encapsulate this sort of thing in a function like extract() that has a convenient interface. Bill Dunlap Spotfire, TIBCO Software wdunlap tibco.com > -----Original Message----- > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] On > Behalf Of davavra > Sent: Thursday, December 22, 2011 10:31 AM > To: r-help@r-project.org > Subject: Re: [R] Indexing multi-dimensional table > > > > >From help("[", package="base"): "An index value of NULL is treated as > > if it were integer(0).". > > Yeah, I should have read it better. > > >I don't think there is an easy way to achieve: > > y[,2:3,1,drop=FALSE] > > using do.call("[") without explicitly specify the indices for that > > "missing" dimension, i.e. > ... > > If you're willing to use R.utils you can do: > > library("R.utils"); > > extract(y, indices=list(2:3,1), dims=c(2,3), drop=TRUE); > > > Thanks, Henrik. I also wasn't aware of R.utils until today. I should do more > reading :) > > DAV > > > -- > View this message in context: > http://r.789695.n4.nabble.com/Indexing-multi-dimensional-table- > tp4224543p4226198.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > 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. ______________________________________________ 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.