as.numeric
Vektory typu numeric
numeric {base} | Dokumentace R v češtině |
Popis
Vytváří nebo konvertuje objekty typu "numeric"
. is.numeric
je obecnější test objektu, jestli jej lze interpretovat jako čísla.
Použití
numeric(length = 0)
as.numeric(x, ...)
is.numeric(x)
Argumenty
length |
Nezáporný integer specifikující požadovanou délku. Hodnoty typu double budou konvertovány na integer: poskytnutí argumentu délky jiné než jedna je chyba. |
x |
objekt, který má být konvertován nebo testován. |
... |
další argumenty přenesené na jiné metody nebo z jiných metod. |
Detaily
numeric
totožný s double
(a real
). Vytvoří vektor specifikované délky s přesností typu double. Všechny elementy vektoru se rovnají 0
.
as.numeric
je generická funkce, ale metody S3 musí být psány pro as.double
. Je totožná s as.double
.
is.numeric
je interní generická primitivní
funkce: můžete napsat metody pro zpracování specifických tříd objektů, viz InternalMethods. Není to stejné jako is.double
. Faktory jsou zpracovány výchozí metodou a existují metody pro třídy "Date"
, "POSIXt
a "difftime"
(všechny vrátí false). Metody pro is.numeric
by měli vrátit true pouze v případě, že základní typ třídy je double
nebo integer
a hodnoty lze rozumně považovat za číselné (např. aritmetika na nich má smysl a porovnání by mělo být provedeno pomocí základního typu).
Hodnota
pro numeric
a as.numeric
viz double
.
Výchozí metoda pro is.numeric
vrací TRUE
pokud je její argument v režimu mode "numeric"
(type "double"
nebo type "integer"
) a ne faktor a FALSE
jinak. To je, is.integer(x) || is.double(x)
, nebo (mode(x) == "numeric") && !is.factor(x)
.
Varování
Pokud je x
factor
, as.numeric
vrátí jeho číselnou (integer) reprezentaci, která je často nesmyslná, protože nemusí odpovídat faktorovým
úrovním
, viz část ‘Varování’ ve factor
(a druhý příklad níže).
S4 metody
as.numeric
a is.numeric
jsou vnitřně S4 generika, a proto je možné pro ně nastavit metody via setMethod
.
Aby bylo zajištěno, že as.numeric
a as.double
zůstanou totožné, mohou být metody S4 nastaveny pouze pro as.numeric
.
Poznámka k názvům
Je historickou anomálií, že R má dva názvy pro své vektory s plovoucí desetinnou čárkou, double
a numeric
(a předtím real
).
double
je název typu. numeric
je název mode a také implicitní třídy. Jako formální třídu S4 použijte "numeric"
.
Potenciální zmatek spočívá v tom, že R používal režim "numeric"
, když myslel ‘double nebo integer’, což je v rozporu s použitím S4. Tak is.numeric
testuje režim, nikoliv třídu, ale as.numeric
(který je totožný s as.double
) konvertuje do třídy.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
double
, integer
, storage.mode
.
Příklady
as.numeric(c("-.1"," 2.7 ","B"))
# (-0.1, 2.7, NA) + warning as.numeric(factor(5:10))
# co jste neočakávali f <- factor(1:5)
## co typicky myslíte a chcete: as.numeric(as.character(f))
## stejné, značně (pro dlouhé faktory) efektivnější: as.numeric(levels(f))[f]