从onlineCPD函数调用和提取输出数据的有效方法

时间:2019-05-31 05:58:00

标签: r function refactoring online-algorithm

当传入数据为在线形式(流)时,使用循环从$currmu函数中调用和提取onlineCPD的输出时,有没有更有效的方法?

library(ocp)
set.seed(999)

#data
df <- c(rnorm(20,5,1), rnorm(30,15,2), rnorm(20,7,3))


#online method
i <- 1
online.result <- vector(mode="numeric", length=length(df))
while(i <= length(df)){
  online.result[i] <- as.numeric((onlineCPD(df[1:i])$currmu)[i])  #problem here
  i = i + 1
}

#offline method
offline <- onlineCPD(df)
offline.result <- unlist(offline$currmu)


identical(offline.result, online.result) #TRUE

offline变量中可以看到,它吐出了很多信息,考虑到这是一个脱机版本,可以这样做。但是,在while循环中,我们将继续调用并提取非常特定的第i个$currmu作为数据传入。

df足够大并捆绑为嵌套列表时,这将是一个问题。

0 个答案:

没有答案