生成R中8个0和2个1的10元向量的置换
我正在生成10个0和1的元素向量,并将可能的1个数从2变为9 比如说 2个值=1生成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。我这样做了很多次,然后扔掉我们的复制品
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))