将函数应用于列表后保留列表元素的名称

Keep list's elements' names after applying a function to the list

list1 包含几个方阵,每个都这样命名

$name1
           [,1]   [,2]   [,3]   [,4]   [,5]
 [1,] 0.1997578 0.0000 0.0000 0.0000 0.0000
 [2,] 0.0000000 0.2025 0.0000 0.0000 0.0000

我将 eigen.analysis 应用到 list1,然后元素名称在结果中消失了 (list2)。因此,在元素顺序不变的假设下,我必须使用 list1 的名称重命名 list2 中的所有元素。如何修复我的代码以便跳过名称重新分配步骤?谢谢!

list2<- lapply(seq_along(list1), function(i){
  eigen.analysis(list1[[i]])
})
names(list2) <- names(list1)

这是 list2names() 命令之前的样子

[[1]]
[[1]]$lambda1
[1] 0.2025

我希望我的结果是

$name1
$name1$lambda1
[1] 0.2025

lapply(seq_along())lapply(names())都让名字消失了

与其使用 lapply 将函数应用于 seq_along 的索引,不如将函数直接应用于 list1:

list2<- lapply(list1, function(x){
  eigen.analysis(x)
})

list2 如果你这样使用 lapply() 应该命名