В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
6 month running correlation
`library(tidyquant)`
`x<-rnorm(100)
y<-rnorm(100)`
`zoo(cbind(x,y),Sys.Date()-1:100)`
`tq_transmute_xy(x = x,
y = y,
mutate_fun = runCor,
n = 6,
col_rename = "rolling.corr.6")`
Для вашего простого случая вы можете использовать TTR::runCor
.
set.seed(21)
x <- rnorm(30)
y <- rnorm(30)
z <- zoo(cbind(x,y),Sys.Date()-1:30)
tail(rollapplyr(z, 21, function(x) cor(x[,1],x[,2]), by.column=FALSE))
tail(runCor(z[,1],z[,2],21))
Попробуйте что-то вроде этого:
x<-rnorm(100)
y<-rnorm(100)
rollapply(data.frame(x,y), 21 ,function(x) cor(x[,1],x[,2]), by.column=FALSE)
Другими словами, я думаю, вам может понадобиться аргумент by.column=FALSE
. Также работает с объектом zoo
rollapply(zoo(cbind(x,y),Sys.Date()-1:100), 21 ,function(x) cor(x[,1],x[,2]), by.column=FALSE)
Вы можете указать столбцы, которые вы хотите использовать в cor
Функция
z<-rnorm(100)
rollapply(zoo(cbind(x,y,z),Sys.Date()-1:100), 21 ,function(x) cor(x[,1],x[,3]), by.column=FALSE)
rollapply(zoo(cbind(x,y,z),Sys.Date()-1:100), 21 ,function(x) cor(x[,2],x[,3]), by.column=FALSE)
by.column=FALSE
указывает, что функция не должна применяться к каждому столбцу отдельно. Если by.column=TRUE
, то функция будет применяться к каждому столбцу отдельно, и это поведение по умолчанию.
rollapply
для обработки любого количества столбцов: function(x) cor(x)[lower.tri(cor(x))]
– G. Grothendieck
3 October 2017 в 13:43