没有for循环生成t分布数据

时间:2017-11-01 18:45:31

标签: r

我想使用带有df(自由度)向量和概率向量p的分位数函数生成t分布数据。

p <- c(0.01, 0.001, 0.0001)
dof <- c(seq(1, 5, by = 1))

我可以使用如下的循环来完成这项工作。

for (i in dof) {(qt(1-p, df=i))}

没有for循环,我可以使用lapply函数,但它将输出作为列表。

val <- lapply(dof, function(d) qt(1-p, df=d))

如何避免for循环并将输出作为data.frame获取。

编辑:

使用sapply结果是正确的但转置形式:

val <- sapply(dof, function(d) qt(1-p, df=d))
           [,1]      [,2]      [,3]      [,4]     [,5]
[1,]   31.82052  6.964557  4.540703  3.746947 3.364930
[2,]  318.30884 22.327125 10.214532  7.173182 5.893430
[3,] 3183.09876 70.700071 22.203742 13.033672 9.677566

1 个答案:

答案 0 :(得分:1)

这会有用吗?

val <- sapply(dof, function(d) qt(1-p, df=d))