[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