如果我有一个R列表mylist
,你可以像这样在它后面追加一个obj
项:
mylist[[length(mylist)+1]] <- obj
但肯定有一些更紧凑的方式。当我是R的新手时,我试着像这样写lappend()
:
lappend <- function(lst, obj) {
lst[[length(lst)+1]] <- obj
return(lst)
}
但是,由于R的名称调用语义(lst
在调用时被有效地复制,因此对lst
的更改在lappend()
的作用域之外是不可见的),这当然是行不通的。我知道您可以在R函数中进行环境入侵,从而超出函数的作用域并改变调用环境,但对于编写一个简单的附加函数来说,这似乎是一个巨大的打击。
有谁能提出一个更漂亮的方法吗?如果它对向量和列表都适用,那就更好了。