在R中的order函数:参数长度不同。

10

我在R中遇到了以下错误:

argument lengths differ.

我有一个数据集,我想按照两列排序,首先按照caseID排序,然后按照包含时间戳的列排序。我使用以下代码:

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

Col1和col2是两个保存整数的变量。我已经查看了类似的问题并尝试了那里提出的解决方案,但是没有任何作用 ;)。

请有人帮帮我吗?

谢谢!


5
请提供 dput(head(mydata)) 的输出结果。 - GSee
5
我怀疑问题出在你没有引用列名。 - IRTFM
3个回答

9

R认为您的两列长度不同,有时会发生这种情况是因为您意外地访问了一列不存在的列,请检查col1col2的值,确保它们是适当的数字。同时查看length(mydata[,col1])length(mydata[,col2])以查看这两个值是否匹配。还要检查是否缺少逗号或其他标点符号,有时候如果语法不完全正确,那么您会得到一个长度为1的列表,或者单个元素向量,这与另一个向量的长度不匹配。


2

我之前也遇到过这个问题,但是最终成功解决了。尝试使用以下代码。

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

结果是递减的,因此添加 decreasing = False 函数是不必要的。希望这能帮到您。

1

也许查看这篇类似的帖子会很有帮助,使用dplyr包来解决问题并且对我有所帮助: 使用dplyr在组内进行排序

这可能会起到作用:

library(dplyr)
mydata <- mydata %>%
  arrange(
    col1,
    col2,
    desc(col3)
  )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接