Si j'ai quelques R de liste mylist
, vous pouvez ajouter un élément obj
comme si:
mylist[[length(mylist)+1]] <- obj
Mais il y a sûrement certains de façon plus compacte. Quand j'étais nouveau à R, j'ai essayé d'écrire lappend()
comme:
lappend <- function(lst, obj) {
lst[[length(lst)+1]] <- obj
return(lst)
}
mais bien sûr, cela ne fonctionne pas en raison de la R de l'appel par le nom de la sémantique (lst
est effectivement copié lors de l'appel, de sorte que les modifications à l' lst
ne sont pas visibles de l'extérieur de la portée de l' lappend()
. Je sais que vous pouvez faire de l'environnement le piratage par une fonction R à l'extérieur de la portée de votre fonction et de la mutation de l'appelant de l'environnement, mais qui semble comme un gros marteau pour écrire un simple ajout de la fonction.
Quelqu'un peut-il suggérer une plus belle façon de le faire? Les points de Bonus si cela fonctionne pour les deux vecteurs et des listes.