2016-12-05 1 views
1

Warum ist der Ausgang in R wie folgt?R: verschiedene Ergebnisklassen von seq()

> class(seq(1,10)) 
[1] "integer" 
> class(seq(1,10,1)) 
[1] "numeric" 

Ist es, weil man seq(1,10,0.5) nennen könnte und damit doppelte Werte schaffen? Aber warum überprüfe ich nicht, ob Startpunkt und Schrittweite integer sind oder ist das zu viel Aufwand?

+1

seq.int und die Standardmethode von seq für numerische Argumente geben einen Vektor vom Typ "Integer" oder "Double" zurück: Programmierer sollten sich nicht darauf verlassen. –

+0

Hm ok Ich sollte die Dokumentation lesen ... Aber ist es nur Definition oder gibt es etwas Grundlegenderes hinter dieser Wahl? –

+0

Stellen Sie ganzzahlige Eingänge für Integer-Ausgaben zur Verfügung, 'class (seq (1L, 10L, 1L))'. –

Antwort

0

Ich denke, es ist wegen der dritten Option, die Sie angegeben haben. Integer kann keine Dezimalwerte in R eingeben, während numerische Werte dies können. Wenn Sie es ohne das dritte Argument definieren, wird es die Klasse als Ganzzahl annehmen, aber wenn Sie das dritte Argument definieren, kann es auch ein Gleitkommawert sein. So definierte R es so