如何添加到R中的矩阵列表?

时间:2018-04-08 04:12:21

标签: r

如果数据集'train'包含1607行和256列,我希望每行(每个256个元素)为16x16矩阵并有一个列表来保存1607这样的矩阵。 train数据中的所有观察值均为-11之间的值。例如,train中的行向量可能是

a <- seq(from = -1, to = 1, length = 256)

当我尝试运行这样的循环时,

x <- lapply(1:nrow(train), matrix, data=0, nrow=16, ncol=16) #creates list of 1607 matrices of 0's
for (i in length(x)) {
   x[[i]] <- matrix(X_train[i,], nrow=16, ncol=16) #replace each element (matrix) of list x with a matrix of the same dimension from train
}

对于x的所有元素,我始终使用0的矩阵获得相同的未经修改的列表x。我做错了什么?

1 个答案:

答案 0 :(得分:0)

for (i in length(x)) {

在这里,您循环遍历一个值,即length(x)。您可能希望将所有值从1循环到x的长度。你这样做

for (i in 1:length(x)) {

for (i in seq_along(x)) {

如果x为空,后者的好处是不会产生不良结果。但实际上,您根本不需要进行循环,或者生成一个您立即丢弃的空白矩阵列表。相反,做:

rows <- seq_len(nrow(X_train))
x <- lapply(rows, function(row) matrix(X_train[row, ], nrow=16, ncol=16))