10

I'm getting the following error in R:

argument lengths differ.

I have a data set I would like to order on two columns, first on caseID, then on a column that contains a timestamp. I use the following code:

mydata <- mydata[order(mydata[ ,col1], mydata[ ,col2], decreasing = FALSE),]

Col1 and col2 are two variables holding an integer. I have looked at similar questions and tried the solutions that were proposed there, but nothing worked ;).

Could someone please help me?

Kind regards

Henrik
  • 65,555
  • 14
  • 143
  • 159
user183239
  • 123
  • 1
  • 1
  • 7

3 Answers3

9

R thinks that you 2 columns have different lengths, sometimes that happens when you accidentally access a column that does not exist, check the values of col1 and col2 to make sure that they are appropriate numbers. Also look at length(mydata[,col1]) and length(mydata[,col2]) to see if those 2 values match. Also check for missing , or other punctuation, sometimes if you don't have the syntax exactly right then you get a list of length 1, or a single element vector which does not match the other vector in length.

Greg Snow
  • 48,497
  • 6
  • 83
  • 110
2

I was having this same problem, but was able to get my code working. Try this code.

with(mydata, mydata[order(col1,col2),]). 

The result is decreasing, so adding function decreasing = False was not necessary. Hope that helps.

1

Probably it's nice to check this similar post out, uses dplyr package to solve it and it helped me: Arrange within a group with dplyr

This might do the trick:

library(dplyr)
mydata <- mydata %>%
  arrange(
    col1,
    col2,
    desc(col3)
  )
maria118code
  • 153
  • 1
  • 14