如果数据集'train'
包含1607
行和256
列,我希望每行(每个256
个元素)为16x16
矩阵并有一个列表来保存1607
这样的矩阵。 train
数据中的所有观察值均为-1
和1
之间的值。例如,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
。我做错了什么?
答案 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))