简体   繁体   English

加速 R 中的“for”循环

[英]Speed up the 'for' loop in R

Combined has 6713 rows and bids has 7656334 rows:组合有 6713 行,出价有 7656334 行:

i = 1
for(i in 1:length(combined$bidder_id)){
  combined$no_of_bids[i] = count(bids[bids$bidder_id == combined$bidder_id[i],])
  i = i + 1
}

It takes about 30 mins to run this code.运行此代码大约需要 30 分钟。 Any suggestion to speed it up?有什么建议可以加快速度吗?

In this case loop is slower then other R functions在这种情况下,循环比其他 R 函数慢

For example, in tidyverse style group_by() does the job much faster例如,在tidyverse风格中group_by()的工作速度要快得多

library(tidyverse)

bids <- tibble(bidder_id=sample(1:1000, 100000, replace = TRUE))

combined <- bids %>% 
  group_by(bidder_id) %>% 
  summarise(no_of_bids = n())

Should be:应该:

library(dplyr)
left_join(combined,
          count(bids, bidder_id),
          by = 'bidder_id')

Next question please post a reproducible example.下一个问题请发布一个可重现的示例。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM