【发布时间】:2017-04-21 17:11:32
【问题描述】:
我正在使用purrr 库中的map 函数来应用segmented 函数(来自segmented 库),如下所示:
library(purrr)
library(dplyr)
library(segmented)
# Data frame is nested to create list column
by_veh28_101 <- df101 %>%
filter(LCType=="CFonly", Lane %in% c(1,2,3)) %>%
group_by(Vehicle.ID2) %>%
nest() %>%
ungroup()
# Functions:
segf2 <- function(df){
try(segmented(lm(svel ~ Time, data=df), seg.Z = ~Time,
psi = list(Time = df$Time[which(df$dssvel != 0)]),
control = seg.control(seed=2)),
silent=TRUE)
}
segf2p <- function(df){
try(segmented(lm(PrecVehVel ~ Time, data=df), seg.Z = ~Time,
psi = list(Time = df$Time[which(df$dspsvel != 0)]),
control = seg.control(seed=2)),
silent=TRUE)
}
# map function:
models8_101 <- by_veh28_101 %>%
mutate(segs = map(data, segf2),
segsp = map(data, segf2p))
对象by_veh28_101 包含2457 个tibbles。最后一步,使用 map 函数,需要 16 分钟才能完成。有什么办法可以加快速度吗?
【问题讨论】:
-
这里慢的不是
purrr,而是segmented。您正在运行数千个模型,这需要一段时间。分析您的代码以确切了解瓶颈是什么。