创建大量新向量的问题

时间:2019-03-11 20:18:35

标签: r

我想做一些事情:

  • 使用

    从正态分布中绘制100乘50的数字

    平均值= 10,标准偏差= 20

  • 对于任何平局,我都要计算他的标准差和算术平均值。

  • 最后,我想创建一个长度为100的矢量,其中包含标准差和算术平均值之差的绝对值。 (即,我想创建一些向量x,其x [i] = | ab |,其中a是第i个平局中100个数字的标准偏差,b是第i个平局中100个数字的平均值。

我做了什么:

根据上面的正态分布创建100个平局:

replicate(100,rnorm(50,10,20),simple = FALSE)

现在我有问题。我知道我可以使用函数“ mean”和“ sd”来计算算术平均值和标准差,但是我必须定义我作为矢量绘制的数字。我的意思是:

我在第一次抽奖中掷出的数字-向量1

我在第二次抽奖中掷出的数字-向量2

依此类推

然后,我可以计算它们的算术平均值和标准偏差。

那么我们可以算| a-b | (在上面定义)。最后,我将创建向量x [i] = | a-b |。

我有个主意,但我不知道怎么写。

1 个答案:

答案 0 :(得分:2)

这是将replicate的结果分配给变量(类别为"list",自simplify = FALSE起的变量,然后将sapply分配给meansd个功能。

set.seed(1234)    # Make the results reproducible

repl <- replicate(100, rnorm(50, 10, 20), simplify = FALSE) 

mu <- sapply(repl, mean)
s <- sapply(repl, sd)
D <- abs(s - mu)

head(D)
#[1] 16.761930  7.953432  6.833691 12.491605  5.490149  6.850794

单线可能是

D2 <- sapply(repl, function(x) abs(sd(x) - mean(x)))
identical(D, D2)
#[1] TRUE