An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121005/b5ce119c/attachment.pl>
loop for column substraction of a matrix
6 messages · arun, Eliza Botto, Rui Barradas
Hello, 1. Let me refrase it a bit. For each column, sum all others and take the symmetric. mat <- matrix(1:30, ncol = 3) sapply(seq_len(ncol(mat)), function(i) -rowSums(mat[, -i])) 2. write.table (maybe using sep = "\t" ?) and send the file to printer. Hope this helps, Rui Barradas Em 05-10-2012 21:05, eliza botto escreveu:
Dear useRs, I have a matrix with 38 columns and 365 rows. what i want to do is the following..... 1. subtracting from each column, first itself and then all the remaining columns. More precisely, from column number 1, i will first subtract itself(column 1) and then the remaining 37 columns. Afterwards i will take column number 2 and do the same. In this way i want to proceed till 38th column. 2. i want to print the resulting matrix on A4 paper. Bundle of thanks in advance. best regards eliza [[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.
HI,
Try this:
set.seed(1)
?mat1<-matrix(sample(1:500,380,replace=TRUE),ncol=38)
list1<-list()
for(i in 1:ncol(mat1)){
?list1[[i]]<-t(apply(mat1,1,function(x) x[i]-x))
?list1}
list1
A.K.
----- Original Message -----
From: eliza botto <eliza_botto at hotmail.com>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Friday, October 5, 2012 4:05 PM
Subject: [R] loop for column substraction of a matrix
Dear useRs,
I have a matrix with 38 columns and 365 rows. what i want to do is the following.....
1. subtracting from each column, first itself and then all the remaining columns. More precisely, from column number 1, i will first subtract itself(column 1) and then the remaining 37 columns. Afterwards i will take column number 2 and do the same. In this way i want to proceed till 38th column.
2. i want to print the resulting matrix on A4 paper.
Bundle of thanks in advance.
best regards
eliza
??? ??? ??? ? ??? ??? ?
??? [[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.
Hi, Sorry, I think I misunderstand your question (after reading Rui's solution). You can also try any of these to get the result if this is what you meant: set.seed(1) mat1<-matrix(sample(1:500,380,replace=TRUE),ncol=38) res1<-t(do.call(rbind,lapply(1:ncol(mat1), function(i) mat1[,i]-apply(mat1,1,sum)))) #or res1<-sapply(1:ncol(mat1), function(i) mat1[,i]-apply(mat1,1,sum)) #or res1<-mapply(FUN=function(i) mat1[,i]-rowSums(mat1), 1:ncol(mat1)) A.K? ----- Original Message ----- From: eliza botto <eliza_botto at hotmail.com> To: "r-help at r-project.org" <r-help at r-project.org> Cc: Sent: Friday, October 5, 2012 4:05 PM Subject: [R] loop for column substraction of a matrix Dear useRs, I have a matrix with 38 columns and 365 rows. what i want to do is the following..... 1. subtracting from each column, first itself and then all the remaining columns. More precisely, from column number 1, i will first subtract itself(column 1) and then the remaining 37 columns. Afterwards i will take column number 2 and do the same. In this way i want to proceed till 38th column. 2. i want to print the resulting matrix on A4 paper. Bundle of thanks in advance. best regards eliza ??? ??? ??? ? ??? ??? ? ??? [[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.
An embedded and charset-unspecified text was scrubbed... Name: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20121005/91f033a3/attachment.pl>
Or, using your mapply solution, compute rs <- rowSums(mat1) and then use it for all subtractions. With a larger dataset this would be probably faster. Rui Barradas Em 05-10-2012 22:41, arun escreveu:
Hi,
Sorry, I think I misunderstand your question (after reading Rui's solution).
You can also try any of these to get the result if this is what you meant:
set.seed(1)
mat1<-matrix(sample(1:500,380,replace=TRUE),ncol=38)
res1<-t(do.call(rbind,lapply(1:ncol(mat1), function(i) mat1[,i]-apply(mat1,1,sum))))
#or
res1<-sapply(1:ncol(mat1), function(i) mat1[,i]-apply(mat1,1,sum))
#or
res1<-mapply(FUN=function(i) mat1[,i]-rowSums(mat1), 1:ncol(mat1))
A.K
----- Original Message -----
From: eliza botto <eliza_botto at hotmail.com>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Friday, October 5, 2012 4:05 PM
Subject: [R] loop for column substraction of a matrix
Dear useRs,
I have a matrix with 38 columns and 365 rows. what i want to do is the following.....
1. subtracting from each column, first itself and then all the remaining columns. More precisely, from column number 1, i will first subtract itself(column 1) and then the remaining 37 columns. Afterwards i will take column number 2 and do the same. In this way i want to proceed till 38th column.
2. i want to print the resulting matrix on A4 paper.
Bundle of thanks in advance.
best regards
eliza
[[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.