Hi everyone suppose I have a <- array(1:256,rep(4,4)) and want to access a[1,2,3,1] by the vector c(1,2,3,1). As per yesterday, I can use do.call(): a[1,2,3,1] == do.call("[",c(list(a),c(1,2,3,1))) Now how do I apply the above technique (or indeed any other technique!) to get a[1,2,3,] [1] 37 101 165 229 from a vector like c(1,2,3,0) or c(1,2,3,NULL) or c(1,2,3,NA)? OBattempts: do.call("[",c(list(a),c(1,2,3))) do.call("[",c(list(a),c(1,2,3),NULL)) do.call("[",c(list(a),c(1,2,3,NULL))) do.call("[",c(list(a),c(1,2,3,","))) none of these give what I want. Anyone? -- Robin Hankin Uncertainty Analyst Southampton Oceanography Centre SO14 3ZH tel +44(0)23-8059-7743 initialDOTsurname at soc.soton.ac.uk (edit in obvious way; spam precaution)
Robin Hankin <rksh at soc.soton.ac.uk> writes:> Hi everyone > > suppose I have > > a <- array(1:256,rep(4,4)) > > and want to access a[1,2,3,1] by the vector c(1,2,3,1). As per > yesterday, I can use do.call(): > > a[1,2,3,1] == do.call("[",c(list(a),c(1,2,3,1))) > > Now how do I apply the above technique (or indeed any other technique!) to get > > a[1,2,3,] > > [1] 37 101 165 229 > > from a vector like c(1,2,3,0) or c(1,2,3,NULL) or c(1,2,3,NA)?The middle one is impossible. The other two can be done like this v <- c(1,2,3,NA) al <- lapply(v,function(x) if(is.na(x)) alist(a=)$a else x ) do.call("[",c(list(a),al)) This is in treacherous territory: The missing argument indicator has some very strange semantics, for instance if you save it in a variable, then any subsequent use of that variable will trigger the same error as when you access a missing argument in a function: mis <- alist(a=)$a lapply(v,function(x)if(is.na(x))mis else x ) Error in FUN(X[[4]], ...) : Argument "mis" is missing, with no default Technically, the missing argument is implemented as a zero-length variable name> as.character(alist(a=)$a)[1] ""> mode(alist(a=)$a)[1] "name" However, I don't think it is a good idea to rely on that, and anyway, as.name("") is forbidden:> as.name("")Error in as.name("") : attempt to use zero-length variable name -- O__ ---- Peter Dalgaard Blegdamsvej 3 c/ /'_ --- Dept. of Biostatistics 2200 Cph. N (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907