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

2024-05-11

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

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一个向量(默认情况下是一维的),但你试图在其中存储一个二维对象。

You can dep off as NULL and rbind(行绑定)到循环中。另外,请注意,不要使用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)

However,有一种更简单的方法可以做到这一点。你不必生成dep逐行,您可以通过制作包含以下内容的向量来预先生成它9*N您的舍入均匀分布数:

dep <- ceiling(runif(9*N,min=0,max=20))

Now, dep当前是长度为 9*N 的向量。让我们把它变成一个 Nx9 矩阵:

dep <- matrix(dep,nrow=N)

Done!

所以你可以在一行中完成上面的所有代码:

dep <- matrix( ceiling(runif(9*N,min=0,max=20)), nrow=N )

如果你愿意的话可以打电话data.frame on dep(在将其放入二维矩阵形式之后)以获得数据框。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 R 中创建循环来生成随机样本列表? 的相关文章

随机推荐