我不推荐,但是你可以这样做:lapply(myList, 'attr<-', which='myname', value='myStaticName')。老式的for 循环可能是执行此任务的最清晰方法——或者在创建对象时在上游执行此分配。
for (i in seq_along(myList)) attr(myList[[i]], 'myname') <- 'myStaticName'
编辑:
正如@mnel 在 cmets 中指出的那样,data.table 包中的setattr 也是一个有效的选择,因为它通过引用进行分配。
编辑:@mnel -- 不要将 setattr 与 lapply 一起使用。这是for 循环快得多的一种情况。
library(microbenchmark)
library(data.table)
myList <- as.list(1:10000)
`lapply.attr<-` <-
function()
lapply(myList, 'attr<-', which='myname', value='myStaticName')
`for.attr<-` <-
function()
for (i in seq_along(myList))
attr(myList[[i]], 'myname') <- 'myStaticName'
lapply.setattr <-
function()
lapply(myList, setattr, name='myname', value='myStaticName')
for.setattr <- function()
for (i in seq_along(myList))
setattr(myList[[i]], name = 'myname', value = 'myStaticName')
result <- microbenchmark(`lapply.attr<-`(), `for.attr<-`(), lapply.setattr(), for.setattr())
plot(result)