感谢 celestialgod 版主大大提点:
以前以为 *apply 家族的函数就已经是向量化(vectorized)的写法了
查了资料才发现其实底层背后还是有 for 循环 (觉得震撼啊...)
试试看这样的写法
theta <- seq(0,1,len=100)
df <- rep(19,len=100)
n <- rep(20,len=100)
vrt <- Vectorize(rt)
x <- vrt(n=n, df=df, ncp=1/theta)
于是 x[,1] ... x[,100] 就是100个 n 等于20 然后对应各自 delta 值的 t 分配样本了
(但是不知道 df, n 的预先定义有没有意义?)
请版上各位高手再指点~ 谢谢大家
======
补充:
但还是有查到 *apply function 的好处:
1. 程式易读性
2. 会 pre-allocate 向量的内存空间
2. 只影响区域变量不会改变全域变量
ref: https://www.r-bloggers.com/vectorization-in-r-why/
※ 引述《ntpuisbest (阿龙)》之铭言:
: n <- 20
: theta=seq(0,1,len=100)
: rt(n ,1/theta )
: 如题
: 我想要生100组 ,每组都是n=20的t分配样本
: 只是这100组的theta都不一样
: 我像上面那样打 只会回传20个样本
: 并不是我想要的 2000个样本 请问要如何打才能要我要的结果
: 想避免for loop
: 用loop的话 我知道怎么做