[R] Merge matrices with different column names

arun smartpink111 at yahoo.com
Fri Oct 26 22:56:51 CEST 2012


Hi,

Not sure how you want the results to look like in .csv file.
If "L" is the list of matrices, you can also use ?sink()
sink("L.csv")
L
 sink()


#L.csv output: 
$matrix1 
 
var1 var2 var3 
 
[1 ]    1    4    7 
[2 ]    2    5    8 
[3 ]    3    6    9 
 
 
$matrix2 
 
var4 var5 var6 
 
[1 ]    4    7    3 
[2 ]    3    4    5 
[3 ]    2    3    2 

If you want to do some analysis on the .csv file, you can try this:
new3<-readLines("L.csv")
new4<-new3[!grepl("matrix",new3)]
new5<-gsub("\\[.*\\]","",new4)
do.call(rbind,lapply(lapply(strsplit(new5," "),function(x) paste(unlist(strsplit(x," +")),collapse=" ")),function(x) unlist(strsplit(x,"+ "))))
#     [,1]   [,2]   [,3]  
#[1,] "var1" "var2" "var3"
#[2,] "1"    "4"    "7"   
#[3,] "2"    "5"    "8"   
#[4,] "3"    "6"    "9"   
#[5,] "var4" "var5" "var6"
#[6,] "4"    "7"    "3"   
#[7,] "3"    "4"    "5"   
#[8,] "2"    "3"    "2"   


#Another way to save the file: 


 out_file <- file("L1.csv", open="a")  
for (i in seq_along(L)){
    write.table(names(L)[i], file=out_file, sep=",", dec=".",
quote=FALSE, col.names=FALSE, row.names=FALSE) 
    write.table(L[[i]], file=out_file, sep=",", dec=".", quote=FALSE,
col.names=NA, row.names=TRUE)  #writes the data.frames
}
close(out_file)  #
new1<-readLines("L1.csv")
 new2<-new1[!grepl("matrix",new1)]
 dat2<-do.call(rbind,lapply(strsplit(new2,","),`[`,2:4))

dat2
#    [,1]   [,2]   [,3]  
#[1,] "var1" "var2" "var3"
#[2,] "1"    "4"    "7"   
#[3,] "2"    "5"    "8"   
#[4,] "3"    "6"    "9"   
#[5,] "var4" "var5" "var6"
#[6,] "4"    "7"    "3"   
#[7,] "3"    "4"    "5"   
#[8,] "2"    "3"    "2"   


A.K.






----- Original Message -----
From: Charles Determan Jr <deter088 at umn.edu>
To: Dennis Murphy <djmuser at gmail.com>
Cc: r-help at r-project.org
Sent: Friday, October 26, 2012 10:20 AM
Subject: Re: [R] Merge matrices with different column names

Dennis,

This works well and is exactly what I wanted for these matrices.  Thank you
very much, however, when I would try to export the resulting list it just
is bound by columns.  Now this isn't so bad for 2 matrices but I hope to
apply this where there are many matrices and scrolling down a file such as
a 'csv' would be desired.  Any thoughts on exporting a list of matrices?

Thanks,
Charles

On Fri, Oct 26, 2012 at 12:00 AM, Dennis Murphy <djmuser at gmail.com> wrote:

> Hi:
>
> You can't represent the same columns with different names in a matrix (or
> data frame, for that matter). If you want to preserve variable names in the
> various matrices and collect them into one R object, I'd suggest creating a
> list, each component of which is a matrix.
>
> Toy example:
>
> m1 <- matrix(1:9, nrow = 3, dimnames = list(NULL, paste0("var", 1:3)))
> m2 <- matrix(rpois(9, 5), nrow = 3, dimnames = list(NULL, paste0("var",
> 4:6)))
> L <- list(m1, m2)
> names(L) <- paste0("matrix", 1:2)
> L
>
> Dennis
>
> On Thu, Oct 25, 2012 at 8:51 PM, Charles Determan Jr <deter088 at umn.edu>wrote:
>
>> A general question that I have been pursuing for some time but have set
>> aside.  When finishing some analysis, I can have multiple matrices that
>> have specific column names.  Ideally, I would like to combine these
>> separate matrices for a final output as a csv file.
>>
>> A generic example:
>>
>> Matrix 1
>> var1A          var1B          var1C
>> x                      x               x
>> x                      x               x
>>
>> Matrix 2
>> var2A          var2B          var2C
>> x                      x               x
>> x                      x               x
>>
>> I would like a final exportable matrix or dataframe or whichever format is
>> most workable.
>>
>> Matrix 3
>> var1A          var1B          var1C
>> x                      x               x
>> x                      x               x
>>
>> var2A          var2B          var2C
>> x                      x               x
>> x                      x               x
>>
>> However, no matter which function I try reports an error that the column
>> names are not the same.
>>
>> Any insights would be appreciated.
>> Thanks as always,
>> Charles
>>
>>         [[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.
>>
>
>

    [[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.





More information about the R-help mailing list