R使用矢量化编写循环的最快方法

问题描述 投票:1回答:1

假设我有一个简单的for循环,它为数据帧添加了一个随机值。

person <- c("Clark Kent", "Bruce Wayne", "Tony Stark", "Carol Danvers")
sleep_time <- c(8, 1, 3, 6)
data <- data.frame(person, sleep_time)

for (i in 1:length(data$person)) {
  idle <- sample(20:32, 1)
  data$idle_time[i] <- idle
}

我如何使用R的矢量化功能来编写这个,以最快的速度加速过程?我知道对于循环不鼓励,但也读过应用函数不是太快了。

如果这个问题与其他问题类似,我很抱歉。我是使用R的矢量化功能的新手,并且在理解如何在循环之间进行转换以及更快的矢量化形式方面遇到了一些麻烦。

如果您需要更多信息,请与我们联系。

谢谢。

r performance for-loop vectorization apply
1个回答
1
投票

不知道你的用例究竟是什么,但是对于这个特殊情况,你可以完全放弃for循环

data$idle_time <- sample(20:32, nrow(data))

如果行数大于replace = TRUE,您可能希望包含条件length(20:32)

© www.soinside.com 2019 - 2024. All rights reserved.