R 用N>;从k个项目中枚举大小N的所有组合;K

R 用N>;从k个项目中枚举大小N的所有组合;K,r,sampling,R,Sampling,我有一个问题,我有k个项目,比如{0,1},我必须枚举所有可能的N绘图,比如N=3。也就是说,我试图从向量中找到给定大小的所有可能样本,并进行替换 我可以通过以下循环方法到达: for (i1 in c(0,1)){ for (i2 in c(0,1)){ for (i3 in c(0,1)){ print(paste(i1,i2i3,collapse="_")) }}} 然而,这感觉像是一个混乱。有没有更好的方法使用base R来实现这

我有一个问题,我有k个项目,比如
{0,1}
,我必须枚举所有可能的
N
绘图,比如
N=3
。也就是说,我试图从向量中找到给定大小的所有可能样本,并进行替换

我可以通过以下循环方法到达:

for (i1 in c(0,1)){
    for (i2 in  c(0,1)){
        for (i3 in c(0,1)){
             print(paste(i1,i2i3,collapse="_")) 
}}} 

然而,这感觉像是一个混乱。有没有更好的方法使用base R来实现这一点

如果
vec
是您的向量,
n
是您从
vec
中提取的次数,要列举所有可能性,请尝试:

  expand.grid(replicate(n,vec,simplify=FALSE),
       KEEP.OUT.ATTRS=FALSE,stringsAsFactors=FALSE)
例如:

 vec<-0:1
 n<-3
 expand.grid(replicate(n,vec,simplify=FALSE),
       KEEP.OUT.ATTRS=FALSE,stringsAsFactors=FALSE)
 #   Var1 Var2 Var3
 #1    0    0    0
 #2    1    0    0
 #3    0    1    0
 #4    1    1    0
 #5    0    0    1
 #6    1    0    1
 #7    0    1    1
 #8    1    1    1  

vec您可以使用
交互

items <- c(0, 1)
n <- 3

levels(interaction(rep(list(items), n), sep = "_"))
# [1] "0_0_0" "1_0_0" "0_1_0" "1_1_0" "0_0_1" "1_0_1" "0_1_1" "1_1_1"

items好问题,+1!我没有找到任何有用的搜索“所有可能的样本替换”,所以我编辑了你的问题,以便更容易找到未来的用户有相同的问题。