如果我有一些R列表mylist,你可以obj像这样附加一个项目:
mylist[[length(mylist)+1]] <- obj
Run Code Online (Sandbox Code Playgroud)
但肯定有一些更紧凑的方式.当我在R的新人时,我尝试这样写lappend():
lappend <- function(lst, obj) {
lst[[length(lst)+1]] <- obj
return(lst)
}
Run Code Online (Sandbox Code Playgroud)
但是当然由于R的逐个调用语义而无法正常工作(lst在调用时有效复制,所以更改lst在范围之外是不可见的lappend().我知道你可以在R函数中做环境黑客攻击到达外部你的函数范围和mutate调用环境,但这似乎是一个大锤子写一个简单的追加函数.
任何人都可以建议一个更美丽的方式吗?奖励点,如果它适用于矢量和列表.