如果我有一些 R list ,您可以像这样mylist附加一个项目:obj
mylist
obj
mylist[[length(mylist)+1]] <- obj
但肯定有一些更紧凑的方式。当我是 R 的新手时,我试着lappend()这样写:
lappend()
lappend <- function(lst, obj) { lst[[length(lst)+1]] <- obj return(lst) }
但当然,由于 R 的按名称调用语义(lst在调用时有效复制,因此lst在lappend().你的函数范围和改变调用环境,但这似乎是一个大锤子来编写一个简单的附加函数。
lst
任何人都可以提出一种更漂亮的方法吗?如果它适用于向量和列表,则加分。
如果是字符串列表,只需使用c()函数:
c()
R> LL <- list(a="tom", b="dick") R> c(LL, c="harry") $a [1] "tom" $b [1] "dick" $c [1] "harry" R> class(LL) [1] "list" R>
这也适用于矢量,所以我可以获得奖励积分吗?
编辑(2015 年 2 月 1 日): 这篇文章将在其五岁生日时发布。一些善良的读者不断重复它的任何缺点,所以一定要看看下面的一些评论。一种list类型的建议:
list
newlist <- list(oldlist, list(someobj))
一般来说,R 类型很难为所有类型和用途使用一个且只有一个习语。