I understood your answer.
The point is that sort = TRUE that doesn't sort is plain confusing.
Instead, the option should have been something like efficient = TRUE
or FALSE. At least then no one would stupidly expect sort = TRUE to
sort and sort = FALSE to NOT sort.

On Wed, Mar 8, 2017 at 12:51 PM, Jeff Newmiller
<jdnew...@dcn.davis.ca.us> wrote:
> If you are still wondering, try re-reading my answer. FALSE is more 
> efficient, TRUE is sorted. Lack of sorting has nothing to do with preserving 
> order.
> --
> Sent from my phone. Please excuse my brevity.
>
> On March 8, 2017 8:55:06 AM PST, Dimitri Liakhovitski 
> <dimitri.liakhovit...@gmail.com> wrote:
>>Thank you. I was just curious what sort=FALSE had no impact.
>>Wondering what it is there for then...
>>
>>On Wed, Mar 8, 2017 at 11:43 AM, Jeff Newmiller
>><jdnew...@dcn.davis.ca.us> wrote:
>>> Merging is not necessarily an order-preserving operation, but sorting
>>can make the operation more efficient. The sort=TRUE argument forces
>>the result to be sorted, but sort=FALSE is in not a promise that order
>>will be preserved. (I think the imperfect sorting occurs when there are
>>multiple keys but am not sure.) You can add columns to the input data
>>that let you restore some semblance of the original ordering afterward,
>>or you can roll your own possibly-less-efficient merge using match and
>>indexing:
>>>
>>> info[ match( grades2$grade, info$grade ), ]
>>> --
>>> Sent from my phone. Please excuse my brevity.
>>>
>>> On March 8, 2017 8:07:27 AM PST, Dimitri Liakhovitski
>><dimitri.liakhovit...@gmail.com> wrote:
>>>>Hello!
>>>>I have a vector 'grades' and a data frame 'info':
>>>>
>>>>grades2 <- data.frame(grade = c(1,2,2,3,1))
>>>>info <- data.frame(
>>>>  grade = 3:1,
>>>>  desc = c("Excellent", "Good", "Poor"),
>>>>  fail = c(F, F, T)
>>>>)
>>>>
>>>>I want to get the info for all grades I have in info:
>>>>
>>>>This solution resorts everything in the order of column 'grade':
>>>>merge(grades2, info, by = "grade", all.x = T, all.y = F)
>>>>
>>>>Could you please explain why this solution also resorts - despite
>>sort
>>>>= FALSE?
>>>>merge(grades2, info, by = "grade", all.x = T, all.y = F, sort =
>>FALSE)
>>>>
>>>>Thanks a lot!



-- 
Dimitri Liakhovitski

______________________________________________
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.

Reply via email to