gpt4 book ai didi

r - 使用 rnorm() 生成数据集

转载 作者:行者123 更新时间:2023-12-01 23:48:35 27 4
gpt4 key购买 nike

我需要生成一个数据集,其中包含 3 个类中的 20 个观察值(每个类 20 个观察值 - 总共 60 个)和 50 个变量。我试图通过使用下面的代码来实现这一点,但是它抛出了一个错误,我最终创建了 50 个变量的 2 个观察值。

data = matrix(rnorm(20*3), ncol = 50)
Warning message:
In matrix(rnorm(20 * 3), ncol = 50) :
data length [60] is not a sub-multiple or multiple of the number of columns [50]

我想知道我哪里出错了,或者即使这是生成数据集的最佳方法,以及对可能解决方案的一些解释,以便我可以更好地理解将来如何做到这一点。

最佳答案

下面可能用不到 3 行代码就可以完成,但我想保持简单,我也想使用 matrix您似乎熟悉的功能:

#for the response variable y (60 values - 3 classes 1,2,3  - 20 observations per class)
y <- rep(c(1,2,3),20 ) #could use sample instead if you want this to be random as in docendo's answer

#for the matrix of variables x
#you need a matrix of 50 variables i.e. 50 columns and 60 rows i.e. 60x50 dimensions (=3000 table cells)
x <- matrix( rnorm(3000), ncol=50 )

#bind the 2 - y will be the first column
mymatrix <- cbind(y,x)

> dim(x) #60 rows , 50 columns
[1] 60 50
> dim(mymatrix) #60 rows, 51 columns after the addition of the y variable
[1] 60 51

更新

我只是想更具体地说明您在尝试 matrix 时遇到的错误在你的问题中。

  1. 首先rnorm(20*3)rnorm(60) 相同它将根据标准正态分布生成一个包含 60 个值的向量。
  2. 当您使用 matrix 时除非用 byrow 另行指定,否则它将按列填充值争论。正如文档中提到的:

If one of nrow or ncol is not given, an attempt is made to infer it from the length of data and the other parameter. If neither is given, a one-column matrix is returned.

推断它的逻辑方法是通过等式 n * m = number_of_elements_in_matrix其中 nmrows 的数量和 columns矩阵的分别。在你的情况下你的 number_of_elements_in_matrix为 60,列数为 50。因此,行数必须为 60/50=1.2 行。但是,十进制行数没有任何意义,因此您会收到错误消息。由于您选择了 50 列,因此只有 50 的倍数将被接受为 number_of_elements_in_matrix。 .希望这很清楚!

关于r - 使用 rnorm() 生成数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27744033/

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