Hi all, Is there a better to way to subset the ROWs (in the sense of NROW) of an vector, matrix, data frame or array than this?
subset_ROW <- function(x, i) { nd <- length(dim(x)) if (nd <= 1L) { x[i] } else { dims <- rep(list(quote(expr = )), nd - 1L) do.call(`[`, c(list(quote(x), quote(i)), dims, list(drop = FALSE))) } } subset_ROW(1:10, 4:6) #> [1] 4 5 6 str(subset_ROW(array(1:10, c(10)), 2:4)) #> int [1:3(1d)] 2 3 4 str(subset_ROW(array(1:10, c(10, 1)), 2:4)) #> int [1:3, 1] 2 3 4 str(subset_ROW(array(1:10, c(5, 2)), 2:4)) #> int [1:3, 1:2] 2 3 4 7 8 9 str(subset_ROW(array(1:10, c(10, 1, 1)), 2:4)) #> int [1:3, 1, 1] 2 3 4 subset_ROW(data.frame(x = 1:10, y = 10:1), 2:4) #> x y #> 2 2 9 #> 3 3 8 #> 4 4 7 It seems like there should be a way to do this that doesn't require generating a call with missing arguments, but I can't think of it. Thanks! Hadley -- http://hadley.nz ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel