如果我有一些R列表mylist,您可以像这样向其附加一个项目obj:
mylist[[length(mylist)+1]]<;-obj
但肯定有更紧凑的方式。当我刚到R时,我试着写lappend(),就像这样:
lappend<;-功能(lst、obj){
lst[[长度(lst)+1]]<;-obj
返回(lst)
}
但是当然,由于R的按名称调用语义(lst在调用时被有效地复制,因此对lst的更改在lappend()的范围之外是不可见的。我知道你可以在R函数中进行环境黑客攻击,以超出函数的范围并改变调用环境,但这对于编写简单的附加函数来说似乎是一个巨大的挑战
有人能推荐一种更漂亮的方法吗?如果它同时适用于向量和列表,则会获得额外的积分
如果是字符串列表,只需使用c()函数:
R>;LL<;-列表(a=“tom”,b=“dick”)
R>;c(LL,c=“harry”)
一美元
[1] “汤姆”
b美元
[1] “迪克”
$c
[1] “哈利”
R>;等级(LL)
[1] “列表”
R>;
这也适用于向量,所以我能得到额外的分数吗
编辑(2015-2-01):这篇文章将在它的第五个生日到来。一些好心的读者不断重复它的任何缺点,所以无论如何也可以看到下面的一些评论。列表类型的一个建议:
newlist<;-list(oldlist,list(someobj))
一般来说,R类型会使所有类型和用途都很难有一个且只有一个习惯用法