On 7/13/2015 6:02 PM, Lida Zeighami wrote:
Hi Dan,
Thanks for reply,
Sorry the format of matrix is ruiend!
Yes, this matrix is 6×6 but my orginal matrix is so biger than this!!
No, I don't think so your code do that for me!
I want to remove the columns which the sum of their values are equal to
zero!
On Jul 13, 2015 5:31 PM, "Daniel Nordlund" <djnordl...@frontier.com
<mailto:djnordl...@frontier.com>> wrote:
On 7/13/2015 3:01 PM, Lida Zeighami wrote:
Hi there,
I have a matrix which its elements are 0, 1,2,NA
I want to remove the columns which the colsums are equal to 0 or
NA and
drop these columns from the original matrix and create the new
matrix for
the nonzero and NA value?
(I think I have consider na.rm=True and remove the colums
with colsum=0,
because if I consider na.rm=False all the values of my
colsums get NA)
this is my matrix format:
mat[1:5,1:5]
1:110590170 1:110888172 1:110906406
1:110993854
1:110996710 1:111144756
A05363 0 0 0
0 NA 0
A05370 0 0 0
0 0 NA
A05380 1
NA 2 0
NA 0
A05397 0 0
0 1 0
2
A05400 2 0 0
0 0 0
A05426 0
0 NA 0
0 0
summat <- colSums(mat,na.rm = TRUE)
head(summat)
[,1]
1:110590170 3
1:110888172 0
1:110906406 2
1:110993854 1
1:110996710 0
1:111144756 2
The 2nd and 5th columns have colsum=0 so I Ishould remove
them from the
met and keep the rest of columns in another matrix.
my out put should be like below:
metnonzero
1:110590170 1:110906406 1:110993854
1:111144756
A05363 0 0
0 0
A05370 0 0
0 NA
A05380 1 2
0 0
A05397 0
0 1 2
A05400 2 0
0 0
A05426 0 NA
0 0
would you please let me know how can I do that?
Many thanks,
Lid
First, you matrix appears to be 6x6. That being said, does this get
you what you want?
mat[, -which(summat[,1] ]
Dan
--
Daniel Nordlund
Bothell, WA USA
Lida,
I seem to have cut-and-pasted something very badly, and for that I
apologize. Here is a revised version:
mat <- structure(c(0L, 0L, 1L, 0L, 2L, 0L, 0L, 0L, NA, 0L, 0L, 0L, 0L,
0L, 2L, 0L, 0L, NA, 0L, 0L, 0L, 1L, 0L, 0L, NA, 0L, NA, 0L, 0L,
0L, 0L, NA, 0L, 2L, 0L, 0L), .Dim = c(6L, 6L), .Dimnames = list(
c("A05363", "A05370", "A05380", "A05397", "A05400", "A05426"),
c("X1.110590170", "X1.110888172", "X1.110906406", "X1.110993854",
"X1.110996710", "X1.111144756")))
summat <- colSums(mat,na.rm = TRUE)
mat[,-which(summat==0)]
X1.110590170 X1.110906406 X1.110993854 X1.111144756
A05363 0 0 0 0
A05370 0 0 0 NA
A05380 1 2 0 0
A05397 0 0 1 2
A05400 2 0 0 0
A05426 0 NA 0 0
>
Hope this is more helpful,
Dan
--
Daniel Nordlund
Bothell, WA USA
______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.