[R] Paste a matrix column in pairwise fashion with other columns?
jim holtman
jholtman at gmail.com
Wed Sep 26 03:05:07 CEST 2007
try this:
> P.genotype.sample<-matrix(10,10,10)
> P.genotype.sample[,1]<-c(2,2,1,5,1,1,5,6,1,3)
> P.genotype.sample[,2]<-c(6,3,3,6,8,1,6,7,2,3)
> P.genotype.sample[,3]<-c(2,2,2,3,3,2,2,2,3,3)
> P.genotype.sample[,4]<-c(2,8,8,3,8,2,8,3,4,3)
> P.genotype.sample[,5]<-c(3,3,8,3,6,1,1,1,1,3)
> P.genotype.sample[,6]<-c(6,3,8,8,6,8,7,3,1,7)
> P.genotype.sample[,7]<-c(1,5,5,1,5,1,1,5,5,5)
> P.genotype.sample[,8]<-c(5,5,5,5,7,6,7,5,5,8)
> P.genotype.sample[,9]<-c(5,5,8,5,5,5,5,2,5,2)
> P.genotype.sample[,10]<-c(5,8,8,8,8,5,8,5,8,2)
> P.genotype.sample
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 2 6 2 2 3 6 1 5 5 5
[2,] 2 3 2 8 3 3 5 5 5 8
[3,] 1 3 2 8 8 8 5 5 8 8
[4,] 5 6 3 3 3 8 1 5 5 8
[5,] 1 8 3 8 6 6 5 7 5 8
[6,] 1 1 2 2 1 8 1 6 5 5
[7,] 5 6 2 8 1 7 1 7 5 8
[8,] 6 7 2 3 1 3 5 5 2 5
[9,] 1 2 3 4 1 1 5 5 5 8
[10,] 3 3 3 3 3 7 5 8 2 2
> # create matrix of odd/even indices
> x <- matrix(3:ncol(P.genotype.sample), byrow=TRUE, ncol=2)
> # now create the desired output
> apply(x, 1, function(.row){
+ paste(P.genotype.sample[,1:2], P.genotype.sample[,.row])
+ })
[,1] [,2] [,3] [,4]
[1,] "2 2" "2 3" "2 1" "2 5"
[2,] "2 2" "2 3" "2 5" "2 5"
[3,] "1 2" "1 8" "1 5" "1 8"
[4,] "5 3" "5 3" "5 1" "5 5"
[5,] "1 3" "1 6" "1 5" "1 5"
[6,] "1 2" "1 1" "1 1" "1 5"
[7,] "5 2" "5 1" "5 1" "5 5"
[8,] "6 2" "6 1" "6 5" "6 2"
[9,] "1 3" "1 1" "1 5" "1 5"
[10,] "3 3" "3 3" "3 5" "3 2"
[11,] "6 2" "6 6" "6 5" "6 5"
[12,] "3 8" "3 3" "3 5" "3 8"
[13,] "3 8" "3 8" "3 5" "3 8"
[14,] "6 3" "6 8" "6 5" "6 8"
[15,] "8 8" "8 6" "8 7" "8 8"
[16,] "1 2" "1 8" "1 6" "1 5"
[17,] "6 8" "6 7" "6 7" "6 8"
[18,] "7 3" "7 3" "7 5" "7 5"
[19,] "2 4" "2 1" "2 5" "2 8"
[20,] "3 3" "3 7" "3 8" "3 2"
>
On 9/25/07, Luke Neraas <lukasneraas.r at gmail.com> wrote:
> #Hello,
>
> #I have would like to paste a single column of a matrix
> # in pair wise fashion with other columns based upon
> # even and odd column numbers.
> # I can do it in a very clunky fashion and I know there
> # must be a better way. below is a sample matrix and my extremely
> # clunky code that gets the job done for a small matrix, but i plan to
> # do this on a much grander scale. any help would be very much appreciated.
>
> P.genotype.sample<-matrix(10,10,10)
> P.genotype.sample[,1]<-c(2,2,1,5,1,1,5,6,1,3)
> P.genotype.sample[,2]<-c(6,3,3,6,8,1,6,7,2,3)
> P.genotype.sample[,3]<-c(2,2,2,3,3,2,2,2,3,3)
> P.genotype.sample[,4]<-c(2,8,8,3,8,2,8,3,4,3)
> P.genotype.sample[,5]<-c(3,3,8,3,6,1,1,1,1,3)
> P.genotype.sample[,6]<-c(6,3,8,8,6,8,7,3,1,7)
> P.genotype.sample[,7]<-c(1,5,5,1,5,1,1,5,5,5)
> P.genotype.sample[,8]<-c(5,5,5,5,7,6,7,5,5,8)
> P.genotype.sample[,9]<-c(5,5,8,5,5,5,5,2,5,2)
> P.genotype.sample[,10]<-c(5,8,8,8,8,5,8,5,8,2)
> P.genotype.sample
>
> # I would like to paste column 1 with every odd column
> # I would like to paste column 2 with every even column
>
> #I know i can do it step by step in this fashion
>
> Column.1.2_by_Column.3.4<-paste(P.genotype.sample[,1:2],P.genotype.sample
> [,3:4])
> Column.1.2_by_Column.3.4
>
> Column.1.2_by_Column.5.6<-paste(P.genotype.sample[,1:2],P.genotype.sample
> [,5:6])
> Column.1.2_by_Column.5.6
>
> Column.1.2_by_Column.7.8<-paste(P.genotype.sample[,1:2],P.genotype.sample
> [,7:8])
> Column.1.2_by_Column.7.8
>
> Column.1.2_by_Column.9.10<-paste(P.genotype.sample[,1:2],P.genotype.sample
> [,9:10])
> Column.1.2_by_Column.9.10
>
> Column.1.2.data.matrix<- matrix(20,20,4)
>
> Column.1.2.data.list<-list(Column.1.2_by_Column.3.4,Column.1.2_by_Column.5.6
> ,
> Column.1.2_by_Column.7.8,Column.1.2_by_Column.9.10)
> for (i in 1:4){
> Column.1.2.data.matrix[,i]<-Column.1.2.data.list[[i]]
> }
> Column.1.2.data.matrix
>
> # However i will have many more data columns to compare to in a larger data
> set
> # and I was wondering if there was a more clever way to do this and still
> # come up with the same result.
>
> # Any help would be greatly appreciated
>
> # Thanks in advance
>
> Luke Neraas
>
> lukasneraas.r at gmail.com
>
> University of Alaska Fairbanks
> School of Fisheries and Ocean Sciences
> 11120 Glacier Highway
> UAF Fisheries Division
> Juneau, AK 99801
>
> [[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.
>
--
Jim Holtman
Cincinnati, OH
+1 513 646 9390
What is the problem you are trying to solve?
More information about the R-help
mailing list