簡體   English   中英

加速 R 中的“for”循環

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

組合有 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 分鍾。 有什么建議可以加快速度嗎?

在這種情況下,循環比其他 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())

應該:

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

下一個問題請發布一個可重現的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM