我需要访问 lapply 函数中的列表名称。我在网上找到了一些线程,据说我应该遍历列表的名称,以便能够在我的函数中获取每个列表元素名称:
> n = names(mylist) > mynewlist = lapply(n, function(nameindex, mylist) { return(mylist[[nameindex]]) }, mylist) > names(mynewlist) NULL > names(mynewlist) = n
问题是 mynewlist 丢失了原始的 mylist 索引,我必须添加 last names() 分配来恢复它们。
有没有办法为 lapply 函数返回的每个元素提供一个明确的索引名称?或者另一种方法来确保 mynewlist 元素设置了正确的索引名称?如果 lapply 不以与 mylist 相同的顺序返回列表元素,我觉得 mynewlist 索引名称可能是错误的。
我相信lapply默认情况下会保留您正在迭代的任何内容的名称属性。当您存储 in 的名称时myList,n该向量不再具有任何“名称”。因此,如果您将其添加回通过,
lapply
myList
n
names(n) <- names(myList)
和lapply以前一样使用,你应该得到想要的结果。
编辑
今天早上我的大脑有点模糊。这是另一个可能更方便的选项:
sapply(n,FUN = ...,simplify = FALSE,USE.NAMES = TRUE)
我一直在摸索,很困惑,lapply没有USE.NAMES争论,然后我实际上查看了代码sapply并意识到我很傻,这可能是一个更好的方法。
USE.NAMES
sapply