我想使用带有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
答案 0 :(得分:1)
这会有用吗?
val <- sapply(dof, function(d) qt(1-p, df=d))