as.matrix
Matice
matrix {base} | Dokumentace R v češtině |
Popis
matrix
vytvoří matici ze zadané množiny hodnot.
as.matrix
pokusí se převést zadaný argument do matice.
is.matrix
otestuje, zda zadaný argument je (striktní) matice.
Použití
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL)
as.matrix(x, ...)
## S3 metoda pro třídu 'data.frame'
as.matrix(x, rownames.force = NA, ...)
is.matrix(x)
Argumenty
data |
nepovinný vektor dat (může být seznam či vektor výrazů, což je seznam volání, symbolů apod.). Neatomické objekty R, které náleží určité třídě, jsou převedeny pomocí funkce |
nrow |
požadovaný počet řádků. |
ncol |
požadovaný počet sloupců. |
byrow |
logický argument. Pokud je |
dimnames |
vlastnost |
x |
nějaký R object. |
... |
další argumenty, které mohou být kopírovány mezi metodami. |
rownames.force |
logický argument, který udává, zda |
Detaily
Pokud není jeden z argumentů nrow
nebo ncol
uvedený, je učiněn pokus o jeho nalezení na základě délky argumentu data
a druhého parametru. Pokud není uveden ani jeden, je navrácena matice o jednom sloupci.
Pokud je v data
příliš málo prvků pro vyplnění matice, jsou některé prvky z data
použity vícekrát. Pokud má data
délku nula, je použito NA
vhodného typu pro atomický vektor (0
pro tzv. raw vektor) a NULL
pro seznam.
is.matrix
navrátí hodnotu TRUE
, je-li x
vektor a má vlastnost "dim"
o délce 2, v jiném případě FALSE
. Je třeba poznamenat, že data.frame
není dle tohoto testu matice. Funkce je generická: lze vytvářet metody pro konkrétní třídy objektů, viz InternalMethods.
as.matrix
je generická funkce. Metoda pro datové tabulky navrátí matici řetězců, pokud obsahují pouze atomické sloupce jakéhokoliv jiného typu než numeric/logical/complex, pro faktory je použita funkce as.vector
a pro ostatní ne-řetězcové sloupce format
. Ve zbylých případech se postupuje dle převodní hierarchie (logical < integer < double < complex), tzn. datová tabulka typu logical bude převedena na matici stejného typu, datová tabulka smíšeného typu logical-integer bude převedena na matici typu pouze integer apod.
Výchozí metoda pro as.matrix
volá as.vector(x)
, z toho důvodu dojde například k převedení faktorů na vektory řetězců.
Když je převáděn vektor, je výsledkem matice o jednom sloupci, kde názvy vektoru (pokud jsou uvedeny) budou odpovídat názvům řádků matice.
is.matrix
je funkce primitive function.
Metoda print
u matice navrátí obdélníkové rozvržení s názvy dimenzí či indexy. U seznam, který má strukturu matice, jsou vstupy nenulové délky zobrazeny ve formátu integer,7 značící typ a délku.
Poznámka
V případě, že chcete převést vektor na matici, použijte
dim(x) <- c(nx, ny) dimnames(x) <- list(row_names, col_names)
čímž se vyhnete duplikování x
.
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Příklady
is.matrix(as.matrix(1:10))
!is.matrix(warpbreaks) # data.frame, NE matrix!
warpbreaks[1:10,]
as.matrix(warpbreaks[1:10,]) # použití metody as.matrix.data.frame(.)
## Příklad nastavení názvů řádků a sloupců
mdat <- matrix(c(1,2,3, 11,12,13), nrow = 2, ncol = 3, byrow = TRUE,
dimnames = list(c("row1", "row2"),
c("C.1", "C.2", "C.3")))
mdat