【问题标题】:Generate all vectors of certain length with 0 or 1 elements生成具有 0 或 1 个元素的特定长度的所有向量
【发布时间】:2015-06-10 09:50:08
【问题描述】:

我需要生成具有一定长度的元素 0 或 1 的所有可能向量。

比如这里的长度是6,我需要所有的向量:

(0,0,0,0,0,0),(0,0,0,0,0,1),...,(1,1,1,1,1,1)

四处搜索,我找到了一种方法来制作下面的向量y,其中包含64个字符串"000000","000001",...,"111111",但现在我不知道如何将这些字符串中的每一个转换为相关的向量。

x <- seq(0,2^6-1,1)
library(R.utils)
y <- inToBin(x)

编辑:我想出了如何做到这一点:

z <- matrix(NA,nrow=length(y),ncol=6)
for(i in 1:length(y)){
  z[i,] <- as.numeric(strsplit(y[i],"")[[1]])
}

【问题讨论】:

  • 要使用的短语是“长度为 6 的 {0,1} 的所有组合”。这将帮助您更快地找到正确的功能...

标签: r vector combinations


【解决方案1】:

expand gridcombn 函数是您在尝试构建详尽的组合示例时首先想到的。这里我想你想要expand.grid 设施。:

 str( apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, paste0, collapse="") )

 chr [1:64] "000000" "100000" "010000" "110000" "001000" ...

但也许你并不是真的想要,只是想要

apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, list)

或者只是:

expand.grid(0:1,0:1,0:1,0:1,0:1,0:1)

【讨论】:

  • 如果您想将其作为字符向量,请考虑 apply(expand.grid(0:1,0:1,0:1,0:1,0:1,0:1), 1, as.character),它将其作为字符 64 x 6 矩阵提供给您。
  • 第三种方式正是我所需要的,一行!!!我希望我能给你 5 票!
猜你喜欢
  • 1970-01-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
相关资源
最近更新 更多