假设我有几个向量 - 也许它们存储在列表中,但如果有更好的数据结构也可以:
ll <- list(c(1,3,2),
c(1,2),
c(2,1),
c(1,3,1))
Run Code Online (Sandbox Code Playgroud)
我想用第一个数字排序它们,然后用第二个数字来解决关系,然后用第三个数字来解决剩下的关系,等等:
c(1,2)
c(1,3,1)
c(1,3,2)
c(2,1)
Run Code Online (Sandbox Code Playgroud)
是否有任何内置功能可以让我这样做或者我需要自己推出解决方案吗?
(对于那些了解Python的人来说,我所追求的是模仿Python中排序行为的东西)
ll <- list(c(1,3,2),
c(1,2),
c(2,1),
c(1,3,1))
Run Code Online (Sandbox Code Playgroud)
我更喜欢使用NA缺失值而rbind.data.frame不是使用paste:
sortfun <- function(l) {
l1 <- lapply(l, function(x, n) {
length(x) <- n
x
}, n = max(lengths(l)))
l1 <- do.call(rbind.data.frame, l1)
l[do.call(order, l1)] #order's default is na.last = TRUE
}
sortfun(ll)
#[[1]]
#[1] 1 2
#
#[[2]]
#[1] 1 3 1
#
#[[3]]
#[1] 1 3 2
#
#[[4]]
#[1] 2 1
Run Code Online (Sandbox Code Playgroud)