小编Fis*_*ist的帖子

R中的列排序最快

我有一个数据框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有很多专栏.


我尝试过对数据框,数据表和矩阵进行排序ordersort.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)

r data.table

15
推荐指数
1
解决办法
2692
查看次数

将未知长度的序列拆分为R中的一定数量的集合

我有一个长度不一的序列,例如:

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)

因为它返回集,都是平等的,即{这是相当无用 …

r

5
推荐指数
1
解决办法
158
查看次数

标签 统计

r ×2

data.table ×1