[R] putting NAs at the end

Spencer Graves spencer.graves at pdf.com
Wed Aug 13 15:41:12 CEST 2003


Have you considered "?order"?

Spencer Graves

Angel wrote:
> I have a matrix for which each row has 12 elements that represent the xyz coordinates of 4 points.
> So each row of M is (x1,y1,z1,x2,y2,z2,x3,y3,z3,x4,y4,z4). Some points have NA as z values. 
> I want another matrix to be the same as M but with the coordinates of those points with z=NA placed last. 
> For ezample if z1=NA then the new matrix row should be  (x2,y2,z2,x3,y3,z3,x4,y4,z4,x1,y1,z1)
> I've tried writing a function that does the job for each row and then apply to the matrix
> 
> Put.NaN.last<-function(p) {
> Index<-c(which(!is.na(p[c(3,6,9,12)]))*3,which(is.na(p[c(3,6,9,12)]))*3)
> p<-c(p[Index[1]-2],p[Index[1]-1],p[Index[1]],
> p[Index[2]-2],p[Index[2]-1],p[Index[2]],
> p[Index[3]-2],p[Index[3]-1],p[Index[3]],
> p[Index[4]-2],p[Index[4]-1],p[Index[4]])
> return(p)
> }
> A<-matrix(1:36,ncol=12)
> A[c(7,9,17,36)]<-NA
> A<-t(apply(A,1,Put.NaN.last))
> 
> but it is awfully slow.
> Any suggestions on how to do this faster?
> Thanks
> Angel
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://www.stat.math.ethz.ch/mailman/listinfo/r-help




More information about the R-help mailing list