【发布时间】:2020-04-14 15:09:54
【问题描述】:
我是 R 的新手,我正在学习如何将自己的函数应用于矩阵。我写了以下代码:
HAR_ReV<-function(vec){
name<-rlang::enexpr(vec)
x<-vec
ReV_d = ReV_w = ReV_m = NULL
TT = length(x)
for (i in 31:TT){
ReV_d[i] = x[(i-1)]
ReV_w[i] = sum(x[(i-7):(i-1)],na.rm = T)/7
ReV_m[i] = sum(x[(i-30):(i-1)],na.rm = T)/30
}
Realized_Variances = cbind(ReV_d, ReV_w, ReV_m)
colnames(Realized_Variances)= c(paste("ReV_d",name, sep = "_"),
paste("ReV_w",name, sep = "_"),
paste("ReV_m",name, sep = "_"))
Realized_Variances
}
代码是为应用于向量而编写的,上面的函数为每个向量创建一个大小为 3530(包括 NA)X 3 的新矩阵。现在,我有一个包含所有向量的矩阵,我想应用这个函数来获得一个大小为 3530 x 36 的矩阵。
我的矩阵结构如下:
Matrix<-matrix(1:45, nrow = 3530, ncol = 12)
dimnames(Matrix) <- list(NULL, NULL)
dimnames(Matrix) <- list(c(1:3530), c("rrp_nsw_d", "rrp_qld_d" , "rrp_sa_d", "rrp_vic_d", "rrp_nsw_RV_pos", "rrp_qld_RV_pos", "rrp_sa_RV_pos", "rrp_vic_RV_pos",
"rrp_nsw_RV_neg" , "rrp_qld_RV_neg", "rrp_sa_RV_neg", "rrp_vic_RV_neg"))
感谢您的帮助
【问题讨论】:
-
请展示如何使用一个不会产生错误的向量调用此函数。
-
@Parfait ,对于单个向量,这将是代码
example<-as.numeric(c(1:3530)),函数将是HAR_ReV(example)