From: Christos Hatzis <christos_at_nuverabio.com>

Date: Fri 28 Jul 2006 - 00:34:52 EST

Date: Fri 28 Jul 2006 - 00:34:52 EST

indx.zero <- which(a==0)

indx.nz <- (1:length(a))[-indx.zero]

[1,] 1 2 3 [2,] 0 0 0 [3,] 0 0 0 [4,] 2 3 4 [5,] 4 5 2 [6,] 0 0 0 [7,] 3 4 1

-Christos

-----Original Message-----

From: Robin Hankin [mailto:r.hankin@noc.soton.ac.uk]
Sent: Thursday, July 27, 2006 10:16 AM

To: christos@nuverabio.com

Cc: 'Robin Hankin'; 'RHelp'

Subject: Re: [R] inserting rows into a matrix

Hi Christos

thanks for this, but it won't work because in my application f(A2) will fail if there are any zeroes in A2.

cheers

rksh

On 27 Jul 2006, at 15:10, Christos Hatzis wrote:

> This is not as elegant, but should work:

*>
**> a3 <- f(A2)
**> a3[ which( apply(a3,1,prod) == 0 ), ] <- rep(0,ncol(a3))
**> a3
**>
**> Essentially use the product to pick out the rows with at least one 0
**> and replace these rows with 0s.
**>
**> HTH.
**> -Christos
**>
**> -----Original Message-----
**> From: r-help-bounces@stat.math.ethz.ch
**> [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Robin Hankin
**> Sent: Thursday, July 27, 2006 9:54 AM
**> To: RHelp
**> Subject: [R] inserting rows into a matrix
**>
**> Hi
**>
**>
**> I have a little vector function that takes a vector A of strictly
**> positive integers and outputs a matrix M each of whose columns is the
**> vector, modified in a complicated combinatorical way.
**>
**> Now I want to generalize the function so that A can include zeroes.
**> Given A,
**> I want to strip out the zeroes, pass it to my function, and pad M
**> with rows at positions corresponding to the zeroes of A.
**>
**> Commented, minimal, self-contained, reproducible toy example follows.
**>
**>
**> f <- function(a){cbind(a,a+1,rev(a))} #real function a ghastly
**> nightmare
**>
**> A <- 1:5
**> f(A)
**> a
**> [1,] 1 2 5
**> [2,] 2 3 4
**> [3,] 3 4 3
**> [4,] 4 5 2
**> [5,] 5 6 1
**>
**>
**> # f() works as desired.
**>
**> # Now introduce A2, that includes zeroes. In my application, f(A2)
**> would fail because of the zeroes.
**>
**> A2 <- c(1,0,0,2,4,0,3)
**>
**> I can strip the zeroes out and call f():
**> f(A2[A2>0])
**> a
**> [1,] 1 2 3
**> [2,] 2 3 4
**> [3,] 4 5 2
**> [4,] 3 4 1
**>
**> which is fine. How to put the zeroes back in in the appropriate rows
**> and get the following:
**>
**>> cbind(c(1,0,0,2,4,0,3),c(2,0,0,3,5,0,4),c(3,0,0,4,2,0,1))
**> [,1] [,2] [,3]
**> [1,] 1 2 3
**> [2,] 0 0 0
**> [3,] 0 0 0
**> [4,] 2 3 4
**> [5,] 4 5 2
**> [6,] 0 0 0
**> [7,] 3 4 1
**>>
**>
**>
**>
**> anyone?
**>
**>
**>
**> --
**> Robin Hankin
**> Uncertainty Analyst
**> National Oceanography Centre, Southampton European Way, Southampton
**> SO14
**> 3ZH, UK
**> tel 023-8059-7743
**>
**> ______________________________________________
**> R-help@stat.math.ethz.ch 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.
**>
**>
*

-- Robin Hankin Uncertainty Analyst National Oceanography Centre, Southampton European Way, Southampton SO14 3ZH, UK tel 023-8059-7743 ______________________________________________ R-help@stat.math.ethz.ch 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.Received on Fri Jul 28 01:57:22 2006

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Fri 28 Jul 2006 - 04:18:29 EST.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*