sinba
att
如2 2 3
1 4 7
0 7 9
按照第一列变成
0 7 9
1 4 7
2 2 3
rtist
read R-intro, the indexing part.
abel
同时参考下MASS这本书的前4章内容,算是S的基本知识介绍和举例
楼主这个问题可以在第三章找到答案。参考下sort等
bjt
att[do.call(order,att),]
yihui
att[order(att[ ,1]) ,]也一样:)
TTG
[quote]引用第3楼bjt于2007-08-13 10:50发表的“”:
att[do.call(order,att),][/quote]
这个命令好像有点问题,执行时会出错。
bjt
att[do.call(order,att),]
和
att[order(att[ ,1]) ,]
是一样的
TTG
可是我这样执行的
att=matrix(c(2,1,0,2,4,7,3,1,9),3) #和原始数据略有不同,不过应该无所谓的
att[order(att[ ,1]) ,]
[,1] [,2] [,3]
[1,] 0 7 9
[2,] 1 4 1
[3,] 2 2 3
att[do.call(order,att),]
Error in do.call(order, att) : second argument must be a list
is.list(att)
[1] FALSE
为什么呢?
bjt
>do.call #
function (what, args, quote = FALSE, envir = parent.frame())
{
if (!is.list(args))
stop("second argument must be a list")
if (quote) {
enquote <- function(x) as.call(list(as.name("quote"),
x))
args <- lapply(args, enquote)
}
.Internal(do.call(what, args, envir))
}
att=matrix(c(2,1,0,2,4,7,3,1,9),3)
att <- as.data.frame(att)
att[do.call(order,att),]
att[order(att[ ,1]) ,]
# a matrix is a 2-dimensional array
TTG
哦,要先变成数据框啊。