2015-09-06 12 views
9

Warum funktioniert das Folgende nicht?Warum können wir nicht "..." umkehren?

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

während diese Arbeit feine

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

Antwort

8

Es funktioniert nicht, weil der ... Objekttyp in interpretierten Code nicht zugänglich ist. Sie müssen das Objekt als eine Liste erfassen, wie nongkrong zeigte:

for(i in list(...)) 

Werfen Sie einen Blick auf die R Handbuch here

+4

Sie es auch in 'c' wie 'c wickeln kann (...)' –

+1

@ Remi.b Als Nebenbemerkung können Sie tatsächlich auf bestimmte Elemente von '...' als '..1',' ..2' usw. zugreifen. Nicht besonders nützlich für das Looping, aber Sie werden sehen, dass es von Zeit zu Zeit verwendet wird Zeit als Abkürzung, um an einen bestimmten Gegenstand zu kommen. – joran

+0

@joran - raffiniert, und dies ist in "Reserviert" für diejenigen, die sich wundern dokumentiert. – thelatemail

Verwandte Themen