R:如何为`rnorm`的`mean`参数提供一个向量?

TMO*_*TTM 2 r vectorization

如何为means参数提供向量rnorm

around_int1_mean <- seq(1.5, 3.5, 0.1)
Run Code Online (Sandbox Code Playgroud)

我想做一些类似的事情rnorm(n=25, mean=around_int1_mean, sd=0.2),避免使用for-loop.

我想得到一length(around_int1_mean)组样本,n=25其中平均值(在第一组中)为1.5,然后是1.6,依此类推,直到最后一组的平均值为3.5.所以最后我会得到21套25码样本.

李哲源*_*李哲源 5

我想得到一length(around_int1_mean)组样本,n=25其中平均值(在第一组中)为1.5,然后是1.6,依此类推,直到最后一组的平均值为3.5.所以最后我会得到21套25码样本.

你需要

rnorm(n = length(around_int1_mean) * 25,
      mean = rep(around_int1_mean, each = 25), sd = 0.2)
Run Code Online (Sandbox Code Playgroud)

meansd在参数rnorm的量化.它们首先会被回收以保持长度n.然后,为i = 1, 2, ..., n,i-th从中抽取样本N(mean[i], sd[i]).

另一个例子,如果你想要每个均值的单个样本,请执行以下操作:

rnorm(n = length(around_int1_mean), mean = around_int1_mean, sd = 0.2)
Run Code Online (Sandbox Code Playgroud)

由于@TMOTTM坚持认为我错了并且拒绝了我的答案,我必须出示证据来保护自己.

around_int1_mean <- seq(1.5, 3.5, by = 0.1)
Run Code Online (Sandbox Code Playgroud)

我会设置sd = 0消除随机性,因此随机样本只会以mean1的概率取值.这使我们能够证明rnorm生成正确的样本集是正确的mean.

x <- rnorm(n = length(around_int1_mean) * 25,
           mean = rep(around_int1_mean, each = 25), sd = 0)
Run Code Online (Sandbox Code Playgroud)

另外,我会使用矩阵来演示它:

matrix(x, nrow = 25)

#      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13]
# [1,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [2,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [3,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [4,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [5,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [6,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [7,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [8,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
# [9,]  1.5  1.6  1.7  1.8  1.9    2  2.1  2.2  2.3   2.4   2.5   2.6   2.7
#      [,14] [,15] [,16] [,17] [,18] [,19] [,20] [,21]
# [1,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [2,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [3,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [4,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [5,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [6,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [7,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [8,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [9,]   2.8   2.9     3   3.1   3.2   3.3   3.4   3.5
# [ reached getOption("max.print") -- omitted 16 rows ]
Run Code Online (Sandbox Code Playgroud)

显然我的答案是正确的.每列有25个样本,具有相同的平均值.