加快R中的“ for”循环

时间:2019-11-28 12:27:18

标签: r loops dataframe for-loop

“合并”共有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
}

运行此代码大约需要30分钟。有什么建议可以加快速度吗?

2 个答案:

答案 0 :(得分:0)

在这种情况下,循环比其他R函数要慢

例如,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())

答案 1 :(得分:0)

应该是:

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

下一个问题,请发布一个可复制的示例。