Zkombinování hodnot do vektoru nebo seznamu
Popis
Jde o generickou funkci, která kombinuje dohromady své argumenty.
V základní podobě kombinuje funkce své argumenty do vektoru. Všechny argumenty jsou sjednoceny na stejný datový typ, který je datovým typem výstupním, všechny atributy kromě názvů jsou zanedbány.
Použití
c(..., recursive = FALSE)
Argumenty
... |
objekty ke zkombinování |
recursive |
logická hodnota. Pokud recursive = TRUE , funkce postupně prochází seznamy a párové seznamy (list a pairlist) a kombinuje všechny jejich prvky do vektoru. |
Podrobnosti
Výstupní datový typ je určen nejvyšším datovým typem jednotlivých komponent ve smyslu hierarchie NULL < raw < logical < integer < double < complex < character < list < expression. Párové seznamy (pairlist) jsou považovány za seznamy (list), nicméně nevektorové komponenty (např. jména či volání) jsou považovány za jednoprvkové seznamy, jež není možné převést pomocí funkce unlist a to ani v případě, kdy recursive = TRUE .
Funkce c bývá někdy využívána vzhledem k tomu, že jako vedlešjí efekt odebírá atributy kromě jmen (např. při změně pole na vektor). Funkce as.vector je sice intuitivnější způsob takového převedení, nicméně odstraňuje i jména. Za povšimnutí stojí, že pro takové převedení není zapotřebí jiných než základních metod (a ty víceméně s jistotou zachovají atribut class).
Funkce je primitivní.
Hodnota
NULL nebo výraz nebo vektor dle příslušného módu. (Bez jediného argumentu funkce vrací hodnotu NULL .)
Metoda S4
Funkce je S4 generická, kromě případu (x, ..., recursive = FALSE) .
Reference
Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.
Viz také
unlist and as.vector to produce attribute-free vectors.
Příklady
c(1,7:9)
c(1:5, 10.5, "next")
## pouziti s jedinym argumentem pro odstraneni atributu
x <- 1:4
names(x) <- letters[1:4]
x
c(x) # se jmeny
as.vector(x) # beze jmen
dim(x) <- c(2,2)
x
c(x)
as.vector(x)
## zkombinuje do seznamu:
ll <- list(A = 1, c = "C")
## nepouzivat
c(ll, d = 1:3) # which is == c(ll, as.list(c(d = 1:3))
## lepsi varianta
c(ll, d = list(1:3)) # c() combining two lists
c(list(A = c(B = 1)), recursive = TRUE)
c(options(), recursive = TRUE)
c(list(A = c(B = 1, C = 2), B = c(E = 7)), recursive = TRUE)
|