[英]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.