相关疑难解决方法(0)

更快的组合版本

有没有办法加快combn命令,以获得从矢量中取出的2个元素的所有独特组合?

通常这将设置如下:

# Get latest version of data.table
library(devtools)
install_github("Rdatatable/data.table",  build_vignettes = FALSE)  
library(data.table)

# Toy data
d <- data.table(id=as.character(paste0("A", 10001:15000))) 

# Transform data 
system.time({
d.1 <- as.data.table(t(combn(d$id, 2)))
})
Run Code Online (Sandbox Code Playgroud)

但是,combn使用data.table计算所有可能的组合要慢10倍(23秒对比我的计算机3秒).

system.time({
d.2 <- d[, list(neighbor=d$id[-which(d$id==id)]), by=c("id")]
})
Run Code Online (Sandbox Code Playgroud)

处理非常大的向量,我正在寻找一种通过仅计算唯一组合(如combn)来节省内存的方法,但是使用data.table的速度(参见第二个代码片段).

我感谢任何帮助.

combinations r combn data.table

12
推荐指数
5
解决办法
2555
查看次数

创建二进制向量的组合

我想创建一个由固定数字0和1组成的二进制向量的所有可能组合.例如:dim(v)= 5x1; N1 = 3; N0 = 2; 在这种情况下,我希望有类似的东西:

  1,1,1,0,0
  1,1,0,1,0
  1,1,0,0,1
  1,0,1,1,0
  1,0,1,0,1
  1,0,0,1,1
  0,1,1,1,0
  0,1,1,0,1
  0,1,0,1,1
  0,0,1,1,1
Run Code Online (Sandbox Code Playgroud)

我找到了一些帮助阅读这篇文章 创建所有可能的0,1或2"1"的长度为n的二进制向量 的组合,但我想只生成我需要的组合,避免任何浪费空间(我认为问题会随着n)而呈指数增长

binary combinations r

5
推荐指数
2
解决办法
2336
查看次数

在R中生成长度为n的所有可能的二进制向量

我想n在R中生成所有可能的长度二进制向量.这样做的最佳方法(最好是计算效率和可读代码)是什么?

binary r vector

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

标签 统计

r ×3

binary ×2

combinations ×2

combn ×1

data.table ×1

vector ×1