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

时间:2019-04-17 23:56:13

标签: r performance for-loop vectorization apply

说我有一个简单的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的矢量化功能来编写此代码,以使其尽快完成?我知道不鼓励for循环,但也已经了解到apply函数不会太快。

如果这个问题与其他问题相似,我深表歉意。我是R的向量化功能的新手,在理解如何在循环和更快的向量化形式之间进行转换时遇到了一些麻烦。

如果您需要更多信息,请告诉我。

谢谢。

1 个答案:

答案 0 :(得分:1)

不确定您的用例实际上是什么,但是您可以通过这样做完全摆脱for循环

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

如果您的行数大于replace = TRUE,则可能要包括条件length(20:32)