1

我使用tapplyR 中的函数创建了一个持续时间的数组“持续时间”。与数组向量关联的属性是“字符”类,我相信这就是为什么它们"1" "10" "100" "2" "20" "200"...在代码中像下面的示例那样排序。

上述属性与行程编号相关联,我想按此编号按升序(1、2、3 ...)排序。我曾尝试使用order, sort, 转换为data.frame等进行各种攻击,但均未成功。请帮忙!

我的代码如下。


tripDur <- function (aDate) {
    difftime(max(aDate), min(aDate), units = "hours")   
}

tmp<- tapply(gps$D_DATE, gps$trip, tripDur)
duration <- tmp; duration

> duration
         1         10        100        101        102        103        104        105 
14.8155556  4.6188889  1.6166667 15.9366667 27.4000000 18.1200000 16.8522222 16.9066667

> str(duration)
num [1:158(1d)] 14.82 4.62 1.62 15.94 27.4 ...
 - attr(*, "dimnames")=List of 1
  ..$ : chr [1:158] "1" "10" "100" "101" ...
4

1 回答 1

3

尝试一些类似的东西。

> my.vec <- letters[1:5]
> names(my.vec) <- c("1", "10", "5", "100", "13")
> my.vec
  1  10   5 100  13 
"a" "b" "c" "d" "e" 
> my.vec[order(as.numeric(names(my.vec)))]
  1   5  10  13 100 
"a" "c" "b" "e" "d" 
于 2012-07-13T13:01:37.040 回答