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