R 交叉验证中可变尺寸模型系数矩阵的生成

R 交叉验证中可变尺寸模型系数矩阵的生成,r,matrix,R,Matrix,我正在努力准备一个合适的结构。用于存储线性回归交叉验证过程结果的矩阵或数据框。作为其中的一部分,我需要存储每次运行和每次选择预测系数的误差矩阵。由于系数的数量取决于特征的数量,矩阵/数据帧中的条目将是可变的。存储它们的最佳方法是什么? 我曾想过分离误差矩阵和预测系数矩阵,但由于条目的大小是可变的,因此无法继续进行预测系数部分。 作为一个尝试性的例子,这就是我尝试将结构作为矩阵来处理的内容 问题1。是否可能有一种结构将系数向量存储到矩阵或数据帧中,以便我们能够访问它以选择误差最小的一个? 问题2。

我正在努力准备一个合适的结构。用于存储线性回归交叉验证过程结果的矩阵或数据框。作为其中的一部分,我需要存储每次运行和每次选择预测系数的误差矩阵。由于系数的数量取决于特征的数量,矩阵/数据帧中的条目将是可变的。存储它们的最佳方法是什么? 我曾想过分离误差矩阵和预测系数矩阵,但由于条目的大小是可变的,因此无法继续进行预测系数部分。 作为一个尝试性的例子,这就是我尝试将结构作为矩阵来处理的内容

问题1。是否可能有一种结构将系数向量存储到矩阵或数据帧中,以便我们能够访问它以选择误差最小的一个? 问题2。解决这个问题的好方法是什么

> a1 <- matrix(1:2, nrow=2, ncol=1)
> a2 <- matrix(2:3, nrow=2, ncol=1)
> b1 <- matrix(1:3, nrow=3, ncol=1)
> b2 <- matrix(2:4, nrow=3, ncol=1)
> 
> a1
     [,1]
[1,]    1
[2,]    2
> a2
     [,1]
[1,]    2
[2,]    3
> b1
     [,1]
[1,]    1
[2,]    2
[3,]    3
> b2
     [,1]
[1,]    2
[2,]    3
[3,]    4
> M <- matrix(data=NA, nrow=2, ncol=2)
> M[1,1] <- a1
Error in M[1, 1] <- a1 : 

出了什么问题?

不太清楚,但您可以尝试使用列表。如果您使用列表,但在每个列表项中为预测错误统计提供相同的名称,您应该能够将所有结果存储在一个对象列表中,但仍然可以编写函数,从这些统计数据的比较中识别或选择其中一个项目。@Davidernburg:我下面的想法是创建两个矩阵:一个用于误差,另一个用于预测系数。我可以找到每个模型类的最小值,然后使用索引访问相应的预测系数。@ulfelder:如果我理解正确,您建议为每个错误和相应的系数创建对列表,但我们面临的问题是在查找最小值的过程中从列表的一个元素移动到另一个元素。我在第一个问题中尝试了以下更新,但似乎我有更多的处理来访问相应的预测系数矩阵。
> j <- list(first=a2, second=b2)
> k <- list(first=a1, second=b1)
> j
$first
     [,1]
[1,]    2
[2,]    3

$second
     [,1]
[1,]    2
[2,]    3
[3,]    4

> k
$first
     [,1]
[1,]    1
[2,]    2

$second
     [,1]
[1,]    1
[2,]    2
[3,]    3

> M <- list(A=k, B=j)
> M
$A
$A$first
     [,1]
[1,]    1
[2,]    2

$A$second
     [,1]
[1,]    1
[2,]    2
[3,]    3


$B
$B$first
     [,1]
[1,]    2
[2,]    3

$B$second
     [,1]
[1,]    2
[2,]    3
[3,]    4
> j <- list(a=a1, b=b1)
> k <- list(a=a2, b=b2)
> M <- list(A=j, B=k)
> M
$A
$A$a
     [,1]
[1,]    1
[2,]    2

$A$b
     [,1]
[1,]    1
[2,]    2
[3,]    3


$B
$B$a
     [,1]
[1,]    2
[2,]    3

$B$b
     [,1]
[1,]    2
[2,]    3
[3,]    4
> m <- LETTERS[1]
> n <- letters[1]
> t <- noquote(paste0("M", "$", m, "$", n, sep=""))
> t
[1] M$A$a
> t <- as.expression(t)
> t
expression("M$A$a")
> eval.parent(t, n=1)
[1] "M$A$a"
> eval.parent(M$A$a, n=1)
     [,1]
[1,]    1
[2,]    2