Pytanie Jak wstawić element na środku listy?


Mam listę z kilkoma elementami, powiedzmy 10.

testList <- split(1:10,1:10)

Jak wstawić nowy element na środku listy, powiedzmy na pozycji 3?

Brutalny sposób zapętlenia wszystkich elementów będzie działał, ale zastanawiam się, czy istnieje bardziej elegancki sposób robienia tego?


12
2017-07-29 22:00


pochodzenie




Odpowiedzi:


Myślę że append-funkcja jest tym, czego szukasz:

append(testList, list(x=42), 3)
$`1`
[1] 1

$`2`
[1] 2

$`3`
[1] 3

$x
[1] 42

$`4`
[1] 4
#snipped....

22
2017-07-29 23:01



+1 Właśnie tego szukałem !! - Shambho


Używanie wskaźników ekstrakcji:

> testList[5:11] <- c('something', testList[5:10])
> str(testList)
List of 11
 $ 1 : int 1
 $ 2 : int 2
 $ 3 : int 3
 $ 4 : int 4
 $ 5 : chr "something"
 $ 6 : int 5
 $ 7 : int 6
 $ 8 : int 7
 $ 9 : int 8
 $ 10: int 9
 $   : int 10

3
2017-07-29 22:03



Należy jednak pamiętać, że powoduje to niedopasowanie oryginalnych nazw list do zawartości. testList <- c(testList[1:4],"something",testList[5:10]) może być bezpieczniej, jeśli to ma znaczenie. - thelatemail
@ poczta głosowa Tak, dobra uwaga. Wymyślone nazwy nie były ważne w tym przykładzie, ale w innych sytuacjach, które mogą mieć duże znaczenie. - Thomas
+1 dla miłego rozwiązania! Ale funkcja append jest tym, czego szukałem !! - Shambho