Ici, nous allons à nouveau: ajout d'un élément à une liste, en R

Je ne suis pas heureux avec la accepté de répondre à Ajouter un objet à une liste de R dans amorti de la constante de temps?

> list1 <- list("foo", pi)
> bar <- list("A", "B")

Comment puis-je ajouter de nouvelles élément bar à list1? Clairement, c() ne fonctionne pas, il s'aplatit bar:

> c(list1, bar)
[[1]]
[1] "foo"

[[2]]
[1] 3.141593

[[3]]
[1] "A"

[[4]]
[1] "B"

Affectation à l'index des œuvres:

> list1[[length(list1)+1]] <- bar
> list1
[[1]]
[1] "foo"

[[2]]
[1] 3.141593

[[3]]
[[3]][[1]]
[1] "A"

[[3]][[2]]
[1] "B"

Quelle est l'efficacité de cette méthode? Est-il un moyen plus élégant?

  • c(list1,list(bar))? Veuillez utiliser le package microbenchmark de référence à vous-même.
  • Préférez-vous la performance, l'élégance ou d'un compromis de deux? Est toutes vos données connues pour être de chaîne, ou pourrait être arbitraire? Veuillez préciser la question, le titre et le texte en conséquence.
  • Double Possible de Ajouter un objet à une liste de R dans amortis à temps constant, O(1)?
  • Quelqu'un peut dire pourquoi c() ne fonctionne pas et aplati les valeurs?
  • parce que sémantiquement c() est surchargé. Il construit des vecteurs à partir des éléments, et aussi par la concaténation de vecteurs.
  • Seriez-vous en mesure d'expliquer la suite d'un comportement? Alors que l'ajout de la liste c() s'aplatit, mais pas lors de la création de la liste. un<-list(c("bonjour, bonjour"),2) > a [[1]] [1] "bonjour, salut" [[2]] [1] 2 append(a,c (le"quoi","voir")) [[1]] [1] "bonjour, salut" [[2]] [1] 2 [[3]] [1] "ce" [[4]] [1] "voir"
  • Il n'a rien à voir avec c(), vous observez un comportement différent entre list() et append(). Pouvez-vous expliquer pourquoi vous trouvez qu'il est surprenant?

InformationsquelleAutor user443854 | 2013-06-11