我正在尝试准备一个适当的结构(例如矩阵或数据框),用于存储线性回归的交叉验证过程的结果。作为其中的一部分,我需要存储每次运行的误差矩阵和每个预测系数的选择。由于系数的数量取决于特征的数量,因此矩阵/数据帧中的条目将是可变的。存储它们的最佳方法是什么? 我想到了将误差矩阵和预测系数矩阵分开,但由于条目的大小是可变的,因此无法继续预测系数部分。 作为一个试验例子,我试图将结构作为矩阵进行处理。
Q1。是否有可能有一个结构将系数向量存储到矩阵或数据框中,以便我们可以访问它以选择具有最小误差的那个? Q2。这个问题的好方法是什么?
> 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 :
以下是我所说的回复:
> 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
我稍微修改了上面的代码,以便我可以使用LETTERS和字母如下:
> 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
我希望我可以在本次讨论中提出跟进问题,因为它与同一主题相关。假设,从错误矩阵中,minimum具有索引[1,1](即row = 1且column = 1),那么相应地我必须访问列表元素M $ A $ a(来自上面的代码)。所以我尝试了以下代码:
> 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"
所以,我不能以这种方式得到M $ A $ a,但如果我执行下面的代码,我会得到所需的list元素:
> eval.parent(M$A$a, n=1)
[,1]
[1,] 1
[2,] 2
出了什么问题?