Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 多次生成随机向量,直到条件完成_R_Random_Vector - Fatal编程技术网

R 多次生成随机向量,直到条件完成

R 多次生成随机向量,直到条件完成,r,random,vector,R,Random,Vector,我有一个向量x=(1,2,3,4,…20),我想从这个向量生成5个元素的向量(元素可以重复),直到第一个向量的所有元素至少显示一次。然后我必须用直方图来表示数据。你知道我该怎么做吗? 提前感谢通过替换,您可以获得五个元素的样本(如果不希望替换采样,您可以将其设置为false): x通过替换,您可以获得五个元素的样本(如果您不希望替换采样,可以将其设置为false): xwhile循环似乎是一个很好的方法。此解决方案使用矩阵来捕获样本。每个样本为一行。如果您愿意的话,这样可以更容易地对每个样本执行

我有一个向量x=(1,2,3,4,…20),我想从这个向量生成5个元素的向量(元素可以重复),直到第一个向量的所有元素至少显示一次。然后我必须用直方图来表示数据。你知道我该怎么做吗?
提前感谢

通过替换,您可以获得五个元素的样本(如果不希望替换采样,您可以将其设置为false):


x通过替换,您可以获得五个元素的样本(如果您不希望替换采样,可以将其设置为false):


xwhile循环似乎是一个很好的方法。此解决方案使用矩阵来捕获样本。每个样本为一行。如果您愿意的话,这样可以更容易地对每个样本执行其他操作

set.seed(123)  

base_v <- 1:20

#empty matrix to put samples in
mydat <- matrix(nrow=0,ncol=5)

while(!all(base_v %in% mydat)){
  mydat <- rbind(mydat, sample(base_v,size=5,replace=T))
}

#then making the histogram is trivial
hist(mydat)
set.seed(123)

在这里,一个while循环似乎是一个很好的方法。此解决方案使用矩阵来捕获样本。每个样本为一行。如果您愿意的话,这样可以更容易地对每个样本执行其他操作

set.seed(123)  

base_v <- 1:20

#empty matrix to put samples in
mydat <- matrix(nrow=0,ncol=5)

while(!all(base_v %in% mydat)){
  mydat <- rbind(mydat, sample(base_v,size=5,replace=T))
}

#then making the histogram is trivial
hist(mydat)
set.seed(123)

我想这就是你想要的:

x <- 1:20
s <- integer(0)
while (! all(x %in% s)) {
  s <- c(s, sample(x, 5, TRUE))
}

x我想这就是你想要的:

x <- 1:20
s <- integer(0)
while (! all(x %in% s)) {
  s <- c(s, sample(x, 5, TRUE))
}


x可能是使用
?示例
一个简单的while循环?是的,可以使用示例完成,但我无法设置停止while循环的条件。我在下面提供了循环的答案。可能是使用
?示例
一个简单的while循环?是的,可以使用示例完成,但是我不能设置停止while循环的条件。我在下面提供了循环的答案。我修改了代码,并为每个循环得到了一些直方图。是否有一种方法可以将结果合并到一个直方图中。我需要每个变量在随机向量中的分布。代码如下:x,但这不会保存示例。OP表示他们想要生成一个直方图。@user3949008请看上面的注释。我稍微编辑了一下以保存结果并绘制直方图。我修改了代码,为每个循环得到了一些直方图。是否有一种方法可以将结果合并到一个直方图中。我需要每个变量在随机向量中的分布。代码如下:x,但这不会保存示例。OP表示他们想生成一个直方图。@user3949008请看上面的注释,我稍微编辑了一下以保存结果并绘制直方图。我相信您的代码很好,但每个循环必须捕获每个数字显示的次数,并最终显示直方图中的所有数据,其中一个数字只显示一次。这就是停止循环的条件。你测试过吗?我忘了在柱状图中设置分隔符,但是如果您查看
表(mydat)
您会发现只有一个样本的数字。我相信您的代码很好,但每个循环必须捕获每个数字显示的次数,并最终显示柱状图中的所有数据,其中一个数字只显示一次。这就是停止循环的条件。你测试过吗?我忘了在柱状图中设置分隔符,但是如果您查看
表(mydat)
您会发现只有一个样本的数字。这正是我需要的,这正是我需要的