2015-09-06 11 views
9

Perché il seguente non funziona?Perché non possiamo eseguire il ciclo su `...`?

f = function(...) for (i in ...) print(i) 
f(1:3) 
# Error in f(1:3) : '...' used in an incorrect context 

mentre questo lavoro fine

f = function(...) for (i in 1:length(...)) print(...[i]) 
f(1:3) 
# [1] 1 
# [1] 2 
# [1] 3 

risposta

8

Non funziona poiché il tipo di oggetto ... non è accessibile in codice interpretato. È necessario acquisire l'oggetto come una lista come mostrato nongkrong:

for(i in list(...)) 

Date un'occhiata al manuale di R here

+4

Si può anche avvolgere in 'C' come ad esempio' c (...) ' –

+1

@ Remi.b Come sidenote, puoi effettivamente accedere a elementi specifici di '...' come '..1',' ..2', ecc. Non è terribilmente utile per il ciclo, ma vedrai che usato da tempo a tempo come scorciatoia per ottenere un oggetto specifico. – joran

+0

@joran - nifty, e questo è documentato in '? Reserved' per quelli che si stanno chiedendo. – thelatemail