【问题标题】:R Fastest way to write for loop using vectorizationR使用矢量化编写for循环的最快方法
【发布时间】:2019-09-08 06:48:26
【问题描述】:

假设我有一个简单的 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 的矢量化功能,在理解如何在循环和更快的矢量化形式之间进行转换时遇到了一些麻烦。

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

谢谢。

【问题讨论】:

  • 这是你想要的吗? - data$idle_time &lt;- sample(20:32, nrow(data), replace = T)

标签: r performance for-loop vectorization apply


【解决方案1】:

不确定您的实际用例是什么,但是对于这种特殊情况,您可以完全放弃 for 循环

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

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

【讨论】:

    猜你喜欢
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 2019-02-28
    • 2014-10-03
    • 2012-12-10
    • 2021-03-23
    • 2017-07-22
    相关资源
    最近更新 更多