在R中加速for循环

dpl*_*net 3 for-loop r

我正在寻找运行这个for循环,但执行需要一个不可接受的长时间(~20s).x和y是长度为2000000的预定义矢量.

for(i in 1:2000000)
{
    a <- runif(1)
    b <- runif(1)
    sqrtf <- sqrt(-log(b,10))

    x[i] <- sqrtf*cos(a)
    y[i] <- sqrtf*cos(b)
}
Run Code Online (Sandbox Code Playgroud)

有什么技巧可以加快这一点吗?

编辑:修复了sqrtf

Ben*_*ker 5

n <- 2e6
set.seed(101)
a <- runif(n)
b <- runif(n)
sqrtf <- sqrt(-log10(b))
x <- sqrtf*cos(a)
y <- sqrtf*cos(b)
Run Code Online (Sandbox Code Playgroud)