对列表中的每个矩阵使用 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)
}