Dear R users, I have a question about matrix manipulation with its rows. Plz see the simple example below sample <- list(matrix(1:6, nr=2,nc=3), matrix(7:12, nr=2,nc=3), matrix(13:18,nr=2,nc=3))> sample[[1]] [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6 [[2]] [,1] [,2] [,3] [1,] 7 9 11 [2,] 8 10 12 [[3]] [,1] [,2] [,3] [1,] 13 15 17 [2,] 14 16 18 With this list, I'd like to create this below [[1]] [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 3 5 0 0 0 [2,] 0 0 0 2 4 6 [[2]] [,1] [,2] [,3] [,4] [,5] [,6] [1,] 7 9 11 0 0 0 [2,] 0 0 0 8 10 12 [[3]] [,1] [,2] [,3] [,4] [,5] [,6] [1,] 13 15 17 0 0 0 [2,] 0 0 0 14 16 18 Any suggestion will be greatly appreciated. Regards, Kathryn Lord [[alternative HTML version deleted]]
Hi
with your specific example you can use
remat<-function(mat) {
mt<-t(mat)
mt<-c(mt[1:3], rep(0,6), mt[4:6])
matrix(mt, 2,6, byrow=TRUE)
}
lapply(sample, remat)
Regards
Petr
> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Kathryn Lord
> Sent: Wednesday, January 16, 2013 9:00 AM
> To: r-help at r-project.org
> Subject: [R] matrix manipulation with its rows
>
> Dear R users,
>
> I have a question about matrix manipulation with its rows.
>
> Plz see the simple example below
>
>
> sample <- list(matrix(1:6, nr=2,nc=3), matrix(7:12, nr=2,nc=3),
> matrix(13:18,nr=2,nc=3))
>
> > sample
> [[1]]
> [,1] [,2] [,3]
> [1,] 1 3 5
> [2,] 2 4 6
>
> [[2]]
> [,1] [,2] [,3]
> [1,] 7 9 11
> [2,] 8 10 12
>
> [[3]]
> [,1] [,2] [,3]
> [1,] 13 15 17
> [2,] 14 16 18
>
> With this list, I'd like to create this below
>
> [[1]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 1 3 5 0 0 0
> [2,] 0 0 0 2 4 6
>
> [[2]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 7 9 11 0 0 0
> [2,] 0 0 0 8 10 12
>
> [[3]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 13 15 17 0 0 0
> [2,] 0 0 0 14 16 18
>
>
>
> Any suggestion will be greatly appreciated.
>
> Regards,
>
> Kathryn Lord
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org 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.
Not a great solution, I don't think, but:
> kronecker(diag(2), matrix(1:6, 2, byrow=TRUE))[c(1,4),]
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 2 3 0 0 0
[2,] 0 0 0 4 5 6
So using a function that does this in 'lapply'
should solve the problem you state. I'm guessing
the real problem might be more complex.
Pat
On 16/01/2013 07:59, Kathryn Lord wrote:> Dear R users,
>
> I have a question about matrix manipulation with its rows.
>
> Plz see the simple example below
>
>
> sample <- list(matrix(1:6, nr=2,nc=3), matrix(7:12, nr=2,nc=3),
> matrix(13:18,nr=2,nc=3))
>
>> sample
> [[1]]
> [,1] [,2] [,3]
> [1,] 1 3 5
> [2,] 2 4 6
>
> [[2]]
> [,1] [,2] [,3]
> [1,] 7 9 11
> [2,] 8 10 12
>
> [[3]]
> [,1] [,2] [,3]
> [1,] 13 15 17
> [2,] 14 16 18
>
> With this list, I'd like to create this below
>
> [[1]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 1 3 5 0 0 0
> [2,] 0 0 0 2 4 6
>
> [[2]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 7 9 11 0 0 0
> [2,] 0 0 0 8 10 12
>
> [[3]]
> [,1] [,2] [,3] [,4] [,5] [,6]
> [1,] 13 15 17 0 0 0
> [2,] 0 0 0 14 16 18
>
>
>
> Any suggestion will be greatly appreciated.
>
> Regards,
>
> Kathryn Lord
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org 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.
>
--
Patrick Burns
pburns at pburns.seanet.com
twitter: @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of 'Some hints for the R beginner'
and 'The R Inferno')
HI,
You could also do this:
?lapply(sample1,function(x) {mat1<-cbind(matrix(0,nrow=2,ncol=3),x);
mat1[cbind(rep(1,3),1:3)]<- mat1[cbind(rep(1,3),4:6)];
mat1[cbind(rep(1,3),4:6)]<-0; mat1})
A.K.
----- Original Message -----
From: Kathryn Lord <kathryn.lord2000 at gmail.com>
To: r-help at r-project.org
Cc:
Sent: Wednesday, January 16, 2013 2:59 AM
Subject: [R] matrix manipulation with its rows
Dear R users,
I have a question about matrix manipulation with its rows.
Plz see the simple example below
sample <- list(matrix(1:6, nr=2,nc=3), matrix(7:12, nr=2,nc=3),
matrix(13:18,nr=2,nc=3))
> sample
[[1]]
? ? [,1] [,2] [,3]
[1,]? ? 1? ? 3? ? 5
[2,]? ? 2? ? 4? ? 6
[[2]]
? ? [,1] [,2] [,3]
[1,]? ? 7? ? 9? 11
[2,]? ? 8? 10? 12
[[3]]
? ? [,1] [,2] [,3]
[1,]? 13? 15? 17
[2,]? 14? 16? 18
With this list, I'd like to create this below
[[1]]
? ? [,1] [,2] [,3]? [,4] [,5] [,6]
[1,]? ? 1? ? 3? ? 5? ? 0? ? 0? ? 0
[2,]? ? 0? ? 0? ? 0? 2? ? 4? ? 6
[[2]]
? ? [,1] [,2] [,3]? [,4] [,5] [,6]
[1,]? ? 7? ? 9? 11? ? 0? ? 0? ? 0
[2,]? ? 0? ? 0? ? 0? ? 8? 10? 12
[[3]]
? ? [,1] [,2] [,3]? ? ? [,4]? [,5]? [,6]
[1,]? 13? 15? 17? ? ? 0? ? 0? ? 0
[2,]? ? ? 0? ? 0? ? 0? 14? 16? 18
Any suggestion will be greatly appreciated.
Regards,
Kathryn Lord
??? [[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org 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.