生成R中8个0和2个1的10元向量的置换

生成R中8个0和2个1的10元向量的置换,r,permutation,R,Permutation,我正在生成10个0和1的元素向量,并将可能的1个数从2变为9 比如说 2个值=1 1000000010 1010100000 3个值=1 1000000010 1010100000 编辑:我想高效地生成所有可能的组合。 我有一个粗略的方法,但我猜有一个更简单的方法来实现这一点,使用某种置换函数 我的方式: 使用R中的sample函数:我从一个全零的向量开始,在不替换的情况下从1到10抽取2个随机数,并使用这些随机数作为向量中元素的索引,以更改为1。我这样做了很多次,然后扔掉我们的复制品

我正在生成10个0和1的元素向量,并将可能的1个数从2变为9

比如说 2个值=1

1000000010
1010100000
3个值=1

1000000010
1010100000
编辑:我想高效地生成所有可能的组合。

我有一个粗略的方法,但我猜有一个更简单的方法来实现这一点,使用某种置换函数

我的方式: 使用R中的
sample
函数:我从一个全零的向量开始,在不替换的情况下从1到10抽取2个随机数,并使用这些随机数作为向量中元素的索引,以更改为1。我这样做了很多次,然后扔掉我们的复制品

mat <- matrix(data = 0,nrow = 1000,ncol = 10) #matrix to hold output
vect <- rep(NA, 1000) 
v0 <- rep(0,10)                              #initial vector of all 0s
for(i in 1:dim(mat)[1]){
  mat[i, sample(1:10, 2)] <- 1

  vect[i] <- paste(mat[i,], collapse = "")   #collapse vector to a string
}

mat[duplicated(vect) !=T,]                       #remove duplicates

mat要生成10元素向量中包含2个置换的所有置换,请使用
combn(10,2)
枚举所有可能的位置:

t(apply(combn(10,2),2,function(x){ tmp<-rep(0,10); tmp[x]<-1; return(tmp) }))

t(apply(combn(10,2),2,function(x){tmp要在一个10元素向量中用2个元素生成所有置换,请使用
combn(10,2)
枚举所有可能的位置:

t(apply(combn(10,2),2,function(x){ tmp<-rep(0,10); tmp[x]<-1; return(tmp) }))

t(应用(combn(10,2),2,函数(x){tmpSo,你的问题是什么?你的意图是什么:随机生成一些0和1的向量,或者你想创建所有可能的0/1组合?那么,你的问题是什么?你的意图是什么:随机生成一些0和1的向量,或者你想创建所有可能的0/1组合?同样,你可以使用
t(combn(10,2,函数(x)制表(x,10))
类似地,您可以使用
t(combn(10,2,函数(x)制表(x,10))