我正在尝试在两者之间建立滚动相关性data.table。
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\nRun Code Online (Sandbox Code Playgroud)\n\n这是我尝试使用rollapply的zoo:
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\nRun Code Online (Sandbox Code Playgroud)\n\n并与roll_cor来自roll:
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].\nRun Code Online (Sandbox Code Playgroud)\n
尝试这个:
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)