[R] paste

Spojování řetězců

paste {base} Dokumentace R v češtině

Popis

Spojuje (mezi vektory) a následně slučuje (uvnitř vektoru) (též zřetězuje, konkatenuje) prvky vektorů po jejich (případné) konverzi na datový typ character (textové řetězce).

Použití

paste (..., sep = " ", collapse = NULL) paste0(..., collapse = NULL)

Argumenty

...jeden nebo více R objektů pro konverzi na vektory typu character.
septextový řetězec pro oddělení položek (mezi vektory). Nesmí být NA.
collapsevolitelný textový řetězec pro oddělení výsledků (mezi prvky vektoru). Nesmí být NA.

Podrobnosti

Funkce paste převede své argumenty (pomocí funkce as.character) na textové vektory a spojí jejich prvky (případně je oddělí za pomoci oddělovače zadaného v argumentu sep). Pokud jsou argumenty funkce vektory, jsou spojeny po prvcích a výsledkem je vektor typu character. Pokud se délka vstupních vektorů liší, jsou dle potřeby opakovány (recyklovány), přičemž argumenty nulové délky se mění na "".

Za povšimnutí stojí, že funkce paste() mění NA_character_ (chybějící textovou hodnotu) na "NA", což na první pohled může vypadat neprakticky, např. při spojování dvou textových řetězců, nebo naopak nanejvýš prakticky, např. ve funkci paste("the value of p is ", p).

paste0(..., collapse) je ekvivalentní s paste(..., sep = "", collapse), s mírně vyšší efektivitou.

Pokud je specifikována hodnota argumentu collapse, (spojené) hodnoty ve výsledku jsou ve druhém kroku sloučeny do jediného řetězce a původní prvky jsou odděleny právě hodnotou (znakem) tohoto argumentu.

Hodnota

Vektor spojených hodnot typu character. Výsledný vektor bude délky 0 v případě, že jsou délky 0 všechny argumenty, kromě případu, kdy argument collapse není NULL - v takovém případě je výsledným vektorem prázdný textový řetězec.

Pokud je kterýkoliv vstup do některého prvku výsledku v kódování UTF-8 (a současně žádný vstup do stejného prvku není v kódování "bytes" (viz Encoding), bude tento prvek v kódování UTF-8. V ostatních případech je výstup v aktuálním kódování a v takovém případě je kódování prvku deklarováno pokud současné národní prostředí(locale) je buď Latin-1 nebo UTF-8, nejméně jeden z odpovídajících vstupů (včetně oddělovačů) má deklarováno kódování a všechny vstupy jsou buď ASCII nebo deklarovány.

Pokud je libovolný vstup do některého prvku výstupu deklarován s kódováním "bytes", neprovádí se překlad žádného prvku a výsledný prvek výstupu je opět v kódování "bytes". Pokud argument collapse není NULL, vztahuje se toto pravidlo také na druhou fázi slučování prvků uvnitř vektoru (collapsing), nicméně tentokrát může k překladu dojít již při spojování prvků mezi řetězci v první fázi.

Reference

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Viz také

toString typicky volá funkci paste(*, collapse=", "). Manipulace s řetězci také pomocí funkcí as.character, substr, nchar, strsplit; dále, cat, která slučuje prvky a zapisuje je do souboru a sprintfpro konstrukce řetězců ve stylu C.

plotmath pro použití funkce paste v popiscích grafů.

Příklady

## Pokud je vstupem jediny vektor, funkce paste0 a paste funguji jako as.character.
paste0(1:12)
paste(1:12) # totez
as.character(1:12) # totez

## Pokud je vstupem paste0 vic vektoru, jsou zretezeny ve vektorove podobe
(nth <- paste0(1:12, c("st", "nd", "rd", rep("th", 9))))

## paste funguje stejne, ale oddeluje ve vysledku vstupy mezerou.
## Vsimnete si, ze recyklacni pravidlo upravi vsechny vstupy podle delky nejdelsiho z nich.
paste(month.abb, "is the", nth, "month of the year.")
paste(month.abb, letters)

## Oddelovac je mozne definovat zmenou argumentu sep, ktery muze byt reprezentovan i vice znaky.
paste(month.abb, "is the", nth, "month of the year.", sep = "_*_")

## Pro slouceni vystupu do jedineho retezce zadejte hodnotu argumentu collapse.
paste0(nth, collapse = ", ")

## Pro vstupy delky 1 pouzijte argument sep namisto collapse
paste("1st", "2nd", "3rd", collapse = ", ") # toto patrne neni pozadovany vystup
paste("1st", "2nd", "3rd", sep = ", ")

## Argumenty sep a collapse lze kombinovat dohromady.
paste(month.abb, nth, sep = ": ", collapse = "; ")

## Uzitecne muze byt pouziti paste() v kombinaci s strwrap().
## Pro praci s dlouhymi retezci.
(title <- paste(strwrap(
"Stopping distance of cars (ft) vs. speed (mph) from Ezekiel (1930)",
width = 30), collapse = "\n"))
plot(dist ~ speed, cars, main = title)

 
Článek ze dne 25. 1. 2016 byl naposledy upraven dne 25. 1. 2016 a zobrazen celkem 12369×, naposledy dne 18. 4. 2024 v 22:29.
 
 

Komentáře:

Jméno autora:
Email (nebude zveřejněn):
Komentář:
Sem napiš slovo Adamov:




Stránka:
 
Citace: Kalina, J., Horáková, D., Kuchař, J., Správným směrem [online]. Jiří Kalina, 2014 [cit. 2024-04-20]
Dostupné z: http://spravnym.smerem.cz/Tema/%5bR%5d%20paste.
 
Desktopová verze | Mobilní verze