On May 28, 2013, at 08:06 , Barry King wrote:

> I have an Excel worksheet with 20 rows.  Using XLConnect I successfully
> read the data into 'indata'.  In order to sort it on the 'Item' column
> and the 'Price_Per_Item' column I submit:
> 
> index <- with(indata, order(Item, Price_Per_Item))
> sortedData <- indata[index, ]
> 
> The above works fine but now I do not want to name the columns in the
> R program directly but pass the names of the columns from a parameter file:
> 
> index <- with(indata, order(parameters$ItemColumn,
>                            parameters$PriceColumn))
> sortedData <- indata[index, ]
> 
> This does not work. Only one row appears in 'sortedData'.  I've tried
> unlisting the two arguments to 'order' but this does not correct the
> problem.
> 
> Can anyone suggest a solution to my problem?  Your assistance is
> appreciated.

Nothing to do with order as such, but parameters$ItemColumn is presumably a 
character value (vector of length 1). So you seem to be effectively doing 
order("A","B") which is the constant 1. You need to spell out your intentions:

order(indata[[parameters$ItemColumn]], indata[[parameters$PriceColumn]])

or maybe

do.call("order", indata[unlist(parameters[c("ItemColumn","PriceColumn")])])

(both untested)


-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd....@cbs.dk  Priv: pda...@gmail.com

______________________________________________
R-help@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.

Reply via email to