2016-08-06 9 views
0

In dem Fall, wo f1 und f2 sind ganze Zahlen, Ich weiß, f1: f2 Liste der Ganzzahlen von a nach b mit der Differenz von 1 darstellen. In dem Fall, wo a und b sind beide Faktoren, f1: f2 darstellen ein neuer Faktor mit Pegeln jeder einzelnen Kombination von Faktorstufen von f1 und f2 (eine Interaktion), wie unten gezeigt. Was ist, wenn ich f1: x verwende, wobei x eine Liste ist, die einem Faktor entgegensteht?Colon Operator Faktor: Liste

f1<-gl(2,3) #create factor with 2 levels 
f2<-gl(3,2) #create factor with 3 levels 
x<-rnorm(6) #create list with 6 real numbers(sampled from normal) 

> f1 
[1] 1 1 1 2 2 2 
Levels: 1 2 

> f2 
[1] 1 1 2 2 3 3 
Levels: 1 2 3 

> x 
[1] 0.6705013 -0.2116773 -0.3812724 -0.3687866 1.4878815 0.3095373 

f1:f2 

[1] 1:1 1:1 1:2 2:2 2:3 2:3 
Levels: 1:1 1:2 1:3 2:1 2:2 2:3 

f1:x 

[1] 1 
Warning messages: 
1: In f1:x : numerical expression has 6 elements: only the first used 
2: In f1:x : numerical expression has 6 elements: only the first used 

Wie man sehen kann, erhalte ich eine Leistung von 1 mit Warnmeldung. Was passiert?

+2

Haben Sie die '?": "' Hilfeseite ausgecheckt? Es gibt nur spezielle Versionen für numerische Werte oder 'Faktoren'. Sie können nicht wirklich mischen und übereinstimmen. Mit Faktoren ist ':' im Grunde eine Abkürzung für 'interaction()'. Grundsätzlich ist das Verhalten beim Mischen von Datentypen nicht definiert. Was hast du versucht zu tun? – MrFlick

Antwort

0

Einige Experimente legen nahe, dass R ist die Ausdrücke auf beiden Seiten des Kolons auf numerische Nötigung, wobei das erste Element jeden Ausdruck, und dann mit dem Doppelpunkt als seq(from, to) den Ausdruck auswertet. Z.B.

> factor(c("C","B","A")):(7:8) 
[1] 3 4 5 6 7 

In Ihrem Beispiel wertet 1: 0.6705013-1.