Hi Ram?n,
It is for the column index.
For ex:
tags_totals[order(tags_totals[,1],decreasing=TRUE),1,drop=FALSE] #same as
previous solution as there is only one column.?
#?????????????? [,1]
#Grupos?????????? 23
#Wikis??????????? 15
#Glosarios??????? 11
#Bases de datos??? 7
#Taller??????????? 5
order(tags_totals[,1],decreasing=TRUE) #creates the row index
#If you don't specify the column index, it will select all the columns.
?tags_totals[1,1]
#Wikis
?#? 15
tags_totals[1,1,drop=FALSE]
#????? [,1]
#Wikis?? 15
tags_totals[1,,drop=FALSE]
#????? [,1]
#Wikis?? 15
is.matrix(tags_totals[1,1])
#[1] FALSE
is.matrix(tags_totals[1,1,drop=FALSE])
#[1] TRUE
A.K.
Many thanks Arun,
This is important for me because I will need to do this operation
many times. However, there is one thing that intrigues me. Why it is
necessary to put two commas in a row?
> tags_totals[order(tags_totals[,1],decreasing=TRUE),,drop=FALSE]
? ? ? ? ? ? ? ?[,1]
Grupos ? ? ? ? ? 23
Wikis ? ? ? ? ? ?15
Glosarios ? ? ? ?11
Bases de datos ? ?7
Taller ? ? ? ? ? ?5 > tags_totals[order(tags_totals[,1],decreasing=TRUE),drop=FALSE]
[1] 23 15 11 ?7 ?5
I've been reading around trrying to undestand it, but I can't see the
logic.
Many thanks
----- Original Message -----
From: arun <smartpink111 at yahoo.com>
To: R help <r-help at r-project.org>
Cc:
Sent: Friday, August 30, 2013 9:27 AM
Subject: Re: Ordering a matrix (and not losing the rownames)
Hi Ram?n,
May be this helps:
tags_totals<-matrix(c(15,11,23,7,5),ncol=1,dimnames=list(c("Wikis","Glosarios","Grupos","Bases
de datos","Taller"),NULL))
tags_totals[order(tags_totals[,1],decreasing=TRUE),,drop=FALSE]
#?????????????? [,1]
#Grupos?????????? 23
#Wikis??????????? 15
#Glosarios??????? 11
#Bases de datos??? 7
#Taller??????????? 5
A.K.
Hello,
I have a matrix like this:
> tags_totals
? ? ? ? ? ? ? ?[,1]
Wikis ? ? ? ? ? ?15
Glosarios ? ? ? ?11
Grupos ? ? ? ? ? 23
Bases de datos ? ?7
Taller ? ? ? ? ? ?5
And I want to order by the value of the first column. I do this:
ordered_matrix <-
as.matrix(tags_totals[order(tags_totals[,1],decreasing=TRUE)])
It orders alright, but I lose the rownames, that I need for the graphics
> ordered_matrix
? ? ?[,1]
[1,] ? 23
[2,] ? 15
[3,] ? 11
[4,] ? ?7
[5,] ? ?5
> rownames(ordered_matrix)
NULL
If I try to do it after converting to a dataframe I get an error that I
don't understand:
> tags_totals_frame <- as.data.frame(tags_totals)
> tags_totals_frame[,1]
[1] 15 11 23 ?7 ?5 > ordered_frame <-
tags_totals_frame[order(tags_totals_frame[,1],decreasing=TRUE)]
Error en `[.data.frame`(tags_totals_frame, order(tags_totals_frame[, 1], ?:
? undefined columns selected
Thanks on any help,
--
==================================
Ram?n Ovelar
Campus Virtual Birtuala UPV/EHU
Tel: (34) 94 601 3407
http://campusvirtual.ehu.es