gpt4 book ai didi

r - 如何创建循环以在 R 中生成随机样本列表?

转载 作者:行者123 更新时间:2023-12-04 12:04:56 25 4
gpt4 key购买 nike

我正在尝试创建一个循环,该循环创建一系列包含随机样本的对象,如下所示:

sample <- ceiling(runif(9, min=0, max=20))

(这是一个圆形制服的例子,但它可以用普通、泊松或任何你想要的东西代替)。

因此,我构建了一个循环来自动生成各种这些生成器,目的是将它们包含在数据框中。然后,我设计的循环是这样的:
N=50
dep=as.vector(N)
count=1
for (i in 1:N){
dep[count] <- ceiling(runif(9, min=0, max=20))
count=count+1
}

但它没有用!对于每个 dep[i] 我只有一个数字,而不是九个列表。

我应该怎么做?如果我想将每个 dep[i] 包含在数据框中?

非常感谢,我希望你明白我想要什么。

最佳答案

那是因为你做了dep一个向量(默认情况下这些是一维的),但您试图在其中存储一个二维对象。

您可以dep关闭为 NULLrbind (行绑定(bind))到它在循环中。另外,请注意,而不是使用 count在您的循环中,您可以使用 i :

dep <- NULL
for (i in 1:N){
dep <- rbind(dep, ceiling(runif(9, min=0, max=20)))
}
# if you look at dep now it's a 2D matrix.
# We'll convert to data frame
dep <- as.data.frame(dep)

然而 ,有一种更简单的方法可以做到这一点。您不必生成 dep您可以逐行生成它,方法是制作一个包含 9*N 的向量你的四舍五入的均匀分布数字:
dep <- ceiling(runif(9*N,min=0,max=20))

现在, dep当前是长度为 9*N 的向量。让我们把它变成一个 Nx9 矩阵:
dep <- matrix(dep,nrow=N)

完毕!

因此,您可以在一行中完成上述所有代码:
dep <- matrix( ceiling(runif(9*N,min=0,max=20)), nrow=N )

如果您愿意,可以调用 data.framedep (在它被放入它的二维矩阵形式之后)得到一个数据框。

关于r - 如何创建循环以在 R 中生成随机样本列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9832268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com