> On 23.01.2016 01:21, Robert Sherry wrote: > > In R, I run the following commands: > > df = data.frame( x=runif(10), y=runif(10) ) > > df2 = df[order(x),] > > > You use another x from your workspace, you actually want to > > > df2 = df[order(df[,"x"]),]or df[order(df$x),] And just to prevent yet more confusion, you might also want to avoid 'df' as a name. 'df' is the function that returns the density of the F distribution ... S Ellison ******************************************************************* This email and any attachments are confidential. Any use...{{dropped:8}}
Thank you for the response. As expected, the following expression worked: df[order(df$x),] I would expect the following expression to work also: df[order(df$x)] However it does not. That is, the comma is needed. Please tell me why the comma is there. Thanks Bob On 1/26/2016 8:19 AM, S Ellison wrote:>> On 23.01.2016 01:21, Robert Sherry wrote: >>> In R, I run the following commands: >>> df = data.frame( x=runif(10), y=runif(10) ) >>> df2 = df[order(x),] >> You use another x from your workspace, you actually want to >> >> >> df2 = df[order(df[,"x"]),] > or > df[order(df$x),] > > And just to prevent yet more confusion, you might also want to avoid 'df' as a name. 'df' is the function that returns the density of the F distribution ... > > S Ellison > > > > ******************************************************************* > This email and any attachments are confidential. Any use...{{dropped:8}} > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >
On Tue, Jan 26, 2016 at 4:24 PM, Robert Sherry <rsherry8 at comcast.net> wrote:> > Thank you for the response. As expected, the following expression worked: > df[order(df$x),]This says to sort the rows, and leave the columns alone. Subsetting a 2-dimensional object is via [rows, columns]> I would expect the following expression to work also: > df[order(df$x)]This does something a bit unexpected, and what it does depends on whether you have a data frame or matrix.> mydf <- data.frame(A=1:3, B=4:6)> mydf[2, ] # row 2A B 2 2 5> mydf[, 2] # col 2[1] 4 5 6> mydf[2] # ???B 1 4 2 5 3 6 A data frame is "really" a list of columns, so giving a single value returns that column.> mymat <- as.matrix(mydf) > mymat[2, ] # row 2A B 2 5> mymat[, 2] # col 2[1] 4 5 6> mymat[2] # ???[1] 2 But for a matrix, it returns that element, starting at the top left and working down rows first. So it's a really good idea to not subset your rectangular objects that way, as it may eventually bite you.> However it does not. That is, the comma is needed. Please tell me why the > comma is there. > > Thanks > Bob > On 1/26/2016 8:19 AM, S Ellison wrote: >>> >>> On 23.01.2016 01:21, Robert Sherry wrote: >>>> >>>> In R, I run the following commands: >>>> df = data.frame( x=runif(10), y=runif(10) ) >>>> df2 = df[order(x),] >>> >>> You use another x from your workspace, you actually want to >>> >>> >>> df2 = df[order(df[,"x"]),] >> >> or >> df[order(df$x),] >> >> And just to prevent yet more confusion, you might also want to avoid 'df' >> as a name. 'df' is the function that returns the density of the F >> distribution ... >> >> S Ellison >> >>