我有一个数据框full,我想从中获取最后一列和一列v.然后我想以v最快的方式对两列进行排序.full从csv读入,但这可以用于测试(包括一些现实主义的NA):
n <- 200000
full <- data.frame(A = runif(n, 1, 10000), B = floor(runif(n, 0, 1.9)))
full[sample(n, 10000), 'A'] <- NA
v <- 1
Run Code Online (Sandbox Code Playgroud)
我在v这里有一个,但实际上它可以改变,并full有很多专栏.
我尝试过对数据框,数据表和矩阵进行排序order和sort.list(从这个线程中获取一些想法).所有这些的代码:
# DATA FRAME
ord_df <- function() {
a <- full[c(v, length(full))]
a[with(a, order(a[1])), ]
}
sl_df <- function() {
a <- full[c(v, length(full))]
a[sort.list(a[[1]]), ]
}
# DATA TABLE
require(data.table)
ord_dt <- function() {
a <- …Run Code Online (Sandbox Code Playgroud) 我有一个长度不一的序列,例如:
items <- 1:4
Run Code Online (Sandbox Code Playgroud)
我想将它分成每组可能的组合n.所以说n是两个,我想回归:
Set A Set B
----- -----
1 2 3 4
1 2 3 4
1 2 3 4
1 3 2 4
Run Code Online (Sandbox Code Playgroud)
等集内的布置并不重要,即集合{ 1,2,3}是相同的{ 2,1,3}.集不能为空.
我能想到的最好(permn从包中使用combinat)是:
n <- 2
r <- 1:length(items)
arrangements <- NULL
for (i in 1:(n-1)) {
A <- r[(1:i)]
B <- r[-(1:i)]
arrangements <- c(arrangements, apply(do.call(rbind, permn(1:length(items))), 1, function(z) list(z[A], z[B])))
}
Run Code Online (Sandbox Code Playgroud)
因为它返回集,都是平等的,即{这是相当无用 …