我有使用列表以有组织的方式存储值的代码,以及执行复杂计算的矩阵函数.我想将矩数组注入相应列表的正确部分.列名在列表和矩阵之间有所不同(因为能够嵌套在列表中并在不同级别分配名称,这对于管理复杂的数据集非常方便和重要),但它们具有共性.如何通过匹配这些公共标识符来系统地将矩数组注入列表的正确部分,如下图所示?在本例派生的更完整的代码中,列表和mat1
的类似功能是动态的:因此,我正在寻找一种系统的方式来实现这一点.
在下面的示例中,常见的标识符是"Series"、"Class"和"P_Advance".
生成示例函数和矩阵的代码在本文的底部.
下面是classPrin()
函数和生成矩阵mat1
的代码:
seriesList <- list(
Series_One = data.frame(
Class = c('Class_A','Class_B','Class_C'),
ClassPct = c(0.5,0.2,0.06)
),
Series_Two = data.frame(
Class = c('Class_A','Class_B'),
ClassPct = c(0.7,0.3)
)
)
classPrin <- function(periods) {
series_names <- c("Series_One","Series_Two")
bucket <- list()
for (series in series_names) {
series_elements <- seriesList[[series]][["Class"]]
bucket[[series]] <- list()
for (element in series_elements) {
mat <- matrix(0, nrow = periods, 2)
colnames(mat) <- c(
'P_advance',
'FC_cover_CO'
)
mat[,"P_advance"] <- 0
bucket[[series]][[element]] <- mat
}
}
return(bucket)
}
mat1 <- matrix(0, nrow = 5, ncol = 3)
colnames(mat1) <- c(
"Series_One_Class_A_P_advance",
"Series_One_Class_B_P_advance",
"Series_Two_Class_A_P_advance"
)
mat1[,1] <- 1:5
mat1[,2] <- 11:15
mat1[,3] <- 21:25