对列表中的每个矩阵使用 SVD
Using SVD on each matrix in a list
我正在尝试对列表中的所有矩阵使用 svd() 函数。目前,结果仅针对列表中的第一个矩阵显示。如何为列表中的每个矩阵完成此操作?
svd_list <- function(data) {
for (i in 1:length(data)) {
svd <- svd(data[[i]])
return(svd$d)
}
}
您在每次迭代中都覆盖了 svd
中的结果。初始化一个空列表来存储结果。
svd_list <- function(data) {
svd <- vector('list', length(data))
for (i in 1:length(data)) {
svd[[i]] <- svd(data[[i]])$d
}
return(svd)
}
或者,您可以使用 lapply
:
svd_list <- function(data) {
lapply(data, function(x) svd(x)$d)
}
我正在尝试对列表中的所有矩阵使用 svd() 函数。目前,结果仅针对列表中的第一个矩阵显示。如何为列表中的每个矩阵完成此操作?
svd_list <- function(data) {
for (i in 1:length(data)) {
svd <- svd(data[[i]])
return(svd$d)
}
}
您在每次迭代中都覆盖了 svd
中的结果。初始化一个空列表来存储结果。
svd_list <- function(data) {
svd <- vector('list', length(data))
for (i in 1:length(data)) {
svd[[i]] <- svd(data[[i]])$d
}
return(svd)
}
或者,您可以使用 lapply
:
svd_list <- function(data) {
lapply(data, function(x) svd(x)$d)
}