2013-04-22 25 views
23

Qual è la differenza tra l'utilizzo di c() e append()? C'è qualche?Differenza tra c() e 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' è anche una primitiva con diversi metodi S3 (vedere' metodi ("c") ') – baptiste

risposta

32

Il modo in cui hai utilizzato non mostra differenze tra c e append. append è diverso nel senso che consente di inserire valori in un vettore dopo una determinata posizione.

Esempio:

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 

Se si digita append nel terminale R, vedrai che usa c() per aggiungere valori.

# 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]) 
} 

Si può vedere (la parte commentato) che di default (se non si imposta after= come nel tuo esempio), restituisce semplicemente c(x, values). c è una funzione più generica in grado di concatenare i valori su vectors o lists.

+2

+1 per mostrare la fonte. Fornisce sempre più informazioni su R. – Nishanth

+0

'! After' è TRUE è' after' è 0 e FALSE in caso contrario. Non ha niente a che fare dopo che è stato impostato o meno. – hadley