2013-04-22 22 views
23

Jaka jest różnica między używaniem c() i append()? Czy jest jakiś?Różnica między c() i append()

> c(  rep(0,5), rep(3,2)) 
[1] 0 0 0 0 0 3 3 

> append(rep(0,5), rep(3,2)) 
[1] 0 0 0 0 0 3 3 
+1

'c' jest także prymitywne z kilkoma metodami S3 (patrz' metody ("c") ') – baptiste

Odpowiedz

32

Sposób użyłeś nie pokazuje różnicę między c i append. append jest inny w tym sensie, że umożliwia wprowadzenie wartości do wektora po określonej pozycji.

Przykład:

x <- c(10,8,20) 
c(x, 6) # always adds to the end 
# [1] 10 8 20 6 
append(x, 6, after = 2) 
# [1] 10 8 6 20 

Jeśli wpiszesz append w terminalu R, zobaczysz że używa c() dołączyć wartości.

# append function 
function (x, values, after = length(x)) 
{ 
    lengx <- length(x) 
    if (!after) 
     c(values, x) 
    # by default after = length(x) which just calls a c(x, values) 
    else if (after >= lengx) 
     c(x, values) 
    else c(x[1L:after], values, x[(after + 1L):lengx]) 
} 

można zobaczyć (komentowane część), które domyślnie (jeśli nie ustawisz after= jak w przykładzie), to po prostu zwraca c(x, values). c to bardziej ogólna funkcja, która może łączyć wartości z vectors lub lists.

+2

+1 dla pokazania źródła. Zawsze daje więcej wglądu w R. – Nishanth

+0

'! After' ma wartość PRAWDA," after "ma wartość 0, a FALSE w przeciwnym razie. Nie ma to nic wspólnego z tym, czy po ustawieniu, czy nie. – hadley