[R] inserting rows into a matrix
Christos Hatzis
christos at nuverabio.com
Thu Jul 27 16:10:21 CEST 2006
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 at stat.math.ethz.ch
[mailto:r-help-bounces at 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 at 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.
More information about the R-help
mailing list