与 data.table 的滚动关联

Pie*_*nte 5 r zoo data.table

我正在尝试在两者之间建立滚动相关性data.table

\n\n
dt <- data.table(a=-1:10,b=1:12)\n> dt\n     a  b\n 1: -1  1\n 2:  0  2\n 3:  1  3\n 4:  2  4\n 5:  3  5\n 6:  4  6\n 7:  5  7\n 8:  6  8\n 9:  7  9\n10:  8 10\n11:  9 11\n12: 10 12\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是我尝试使用rollapplyzoo

\n\n
library(zoo)\ndt[,rcor:=rollapplyr(as.list(a,b),width=5,\n                     FUN=function(y) {return(cor(y[[1]],y[[2]]))},fill=NA)]  \n\nError in zoo(data) : \xe2\x80\x9cx\xe2\x80\x9d : attempt to define invalid zoo object\n
Run Code Online (Sandbox Code Playgroud)\n\n

并与roll_cor来自roll

\n\n
library(roll)\nroll_cor(dt[,.(a,b)],5) \nError in roll_cor(dt[, .(a, b)], 5) : \n  Not compatible with requested type: [type=list; target=double].\n
Run Code Online (Sandbox Code Playgroud)\n

G. *_*eck 5

尝试这个:

corr <- function(y) cor(y[, 1], y[, 2])
dt[,rcor:=rollapplyr(.SD, 5, corr, by.column = FALSE, fill = NA)]
Run Code Online (Sandbox Code Playgroud)