
and constructs language-aware lists in R. It extends
the functionality of functions like knitr::combine_words()
and glue::glue_collapse() to make and-separated
and or-separated lists that automatically conform to the user’s
R language settings.
You can install the released version of and from CRAN with:
install.packages("and")or the development version of and from GitHub with:
# install.packages("pak")
pak::pkg_install("rossellhayes/and")and() creates “and”-separated lists from vectors.
names <- c("John", "Paul", "George", "Ringo")
and(names)
#> [1] "John, Paul, George, and Ringo"But the Oxford comma is less common in other varieties of English, what happens if I change my R language to British English?
Sys.setenv(LANGUAGE = "en_GB")
and(names)
#> [1] "John, Paul, George and Ringo"What about other languages?
Sys.setenv(LANGUAGE = "es")
and(names)
#> [1] "John, Paul, George y Ringo"Sys.setenv(LANGUAGE = "eu")
and(names)
#> [1] "John, Paul, George eta Ringo"Sys.setenv(LANGUAGE = "ko")
and(names)
#> [1] "John, Paul, George 및 Ringo"Creating a list is not as simple as putting a different word between the last two items. For example, in Spanish, the word for and changes if the next word starts with an ⟨i⟩ or ⟨y⟩:
princess_bride <- c("Vizzini", "Fezzik", "Inigo Montoya")
Sys.setenv(LANGUAGE = "es")
and(princess_bride)
#> [1] "Vizzini, Fezzik e Inigo Montoya"Everything and() can do or() can do better.
Just use or() to create or-separated lists with
all the same contextual awareness.
outcomes <- c("win", "lose", "draw")
Sys.setenv(LANGUAGE = "en_US")
or(outcomes)
#> [1] "win, lose, or draw"Sys.setenv(LANGUAGE = "ja")
or(outcomes)
#> [1] "win、lose、またはdraw"Don’t want the language of you string to depend on the user’s
environment variables? You can explicitly set the language using the
language argument.
and(names, language = "en_US")
#> [1] "John, Paul, George, and Ringo"and(names, language = "en_GB")
#> [1] "John, Paul, George and Ringo"and(names, language = "es")
#> [1] "John, Paul, George y Ringo"and(names, language = "fr")
#> [1] "John, Paul, George et Ringo"| Language | Code | and example | or example | 
|---|---|---|---|
| Afrikaans | af | 
1, 2, 3 en 4 | 1, 2, 3 of 4 | 
| Akan | ak | 
1, 2, 3, ne 4 | 1, 2, 3, anaa 4 | 
| Albanian | sq | 
1, 2, 3 dhe 4 | 1, 2, 3 ose 4 | 
| Amharic | am | 
1፣ 2፣ 3 እና 4 | 1፣ 2፣ 3 ወይም 4 | 
| Anii | blo | 
1, 2, 3 na 4 | 1, 2, 3 koo 4 | 
| Arabic | ar | 
1 و2 و3 و4 | 1 أو 2 أو 3 أو 4 | 
| Armenian | hy | 
1, 2, 3 և 4 | 1, 2, 3 կամ 4 | 
| Assamese | as | 
1, 2, 3 আৰু 4 | 1, 2, 3 বা 4 | 
| Asturian | ast | 
1, 2, 3 y 4 | 1, 2, 3 o 4 | 
| Azerbaijani | az | 
1, 2, 3 və 4 | 1, 2, 3, yaxud 4 | 
| Bangla | bn | 
1, 2, 3 এবং 4 | 1, 2, 3, বা 4 | 
| Basque | eu | 
1, 2, 3 eta 4 | 1, 2, 3 edo 4 | 
| Belarusian | be | 
1, 2, 3 і 4 | 1, 2, 3 ці 4 | 
| Bosnian | bs | 
1, 2, 3 i 4 | 1, 2, 3 ili 4 | 
| Breton | br | 
1, 2, 3 ha 4 | 1, 2, 3 pe 4 | 
| Bulgarian | bg | 
1, 2, 3 и 4 | 1, 2, 3 или 4 | 
| Burmese | my | 
1 - 2 - 3နှင့် 4 | 1 - 2 - 3 သို့မဟုတ် 4 | 
| Cantonese | yue | 
1、2、3同4 | 1、2、3 或 4 | 
| Catalan | ca | 
1, 2, 3 i 4 | 1, 2, 3 o 4 | 
| Cebuano | ceb | 
1, 2, 3, ug 4 | 1, 2, 3, o 4 | 
| Cherokee | chr | 
1, 2, 3, ᎠᎴ 4 | 1, 2, 3, ᎠᎴᏱᎩ 4 | 
| Chinese | zh | 
1、2、3和4 | 1、2、3或4 | 
| Chuvash | cv | 
1, 2, 3 тата 4 | 1, 2, 3 е 4 | 
| Croatian | hr | 
1, 2, 3 i 4 | 1, 2, 3 ili 4 | 
| Czech | cs | 
1, 2, 3 a 4 | 1, 2, 3 nebo 4 | 
| Danish | da | 
1, 2, 3 og 4 | 1, 2, 3 eller 4 | 
| Dutch | nl | 
1, 2, 3 en 4 | 1, 2, 3 of 4 | 
| English (with Oxford comma) | en | 
1, 2, 3, and 4 | 1, 2, 3, or 4 | 
| English (without Oxford comma) | en_GB et al.* | 
1, 2, 3 and 4 | 1, 2, 3 or 4 | 
| Estonian | et | 
1, 2, 3 ja 4 | 1, 2, 3 või 4 | 
| Faroese | fo | 
1, 2, 3, og 4 | 1, 2, 3, ella 4 | 
| Filipino | fil | 
1, 2, 3, at 4 | 1, 2, 3, o 4 | 
| Finnish | fi | 
1, 2, 3 ja 4 | 1, 2, 3 tai 4 | 
| French | fr | 
1, 2, 3 et 4 | 1, 2, 3 ou 4 | 
| Galician | gl | 
1, 2, 3 e 4 | 1, 2, 3 ou 4 | 
| Georgian | ka | 
1, 2, 3 და 4 | 1, 2, 3 ან 4 | 
| German | de | 
1, 2, 3 und 4 | 1, 2, 3 oder 4 | 
| Greek | el | 
1, 2, 3 και 4 | 1, 2, 3 ή 4 | 
| Gujarati | gu | 
1, 2, 3 અને 4 | 1, 2, 3, અથવા 4 | 
| Hausa | ha | 
1, 2, 3, da 4 | 1, 2, 3 ko 4 | 
| Hebrew | he | 
1, 2, 3 ו4 | 1, 2, 3 או 4 | 
| Hindi | hi | 
1, 2, 3, और 4 | 1, 2, 3 या 4 | 
| Hungarian | hu | 
1, 2, 3 és 4 | 1, 2, 3 vagy 4 | 
| Icelandic | is | 
1, 2, 3 og 4 | 1, 2, 3 eða 4 | 
| Igbo | ig | 
1, 2, 3, na 4 | 1, 2, 3, ma ọ bụ 4 | 
| Indonesian | id | 
1, 2, 3, dan 4 | 1, 2, 3, atau 4 | 
| Interlingua | ia | 
1, 2, 3 e 4 | 1, 2, 3 o 4 | 
| Irish | ga | 
1, 2, 3 agus 4 | 1, 2, 3 nó 4 | 
| Italian | it | 
1, 2, 3 e 4 | 1, 2, 3 o 4 | 
| Japanese | ja | 
1、2、3、4 | 1、2、3、または4 | 
| Javanese | jv | 
1, 2, 3, lan 4 | 1, 2, 3, utowo 4 | 
| Kabuverdianu | kea | 
1, 2, 3 i 4 | 1, 2, 3 o 4 | 
| Kaingang | kgp | 
1, 2, 3 kar 4 | 1, 2, 3 ketũmỹr 4 | 
| Kangri | xnr | 
1, 2, 3, कने 4 | 1, 2, 3 या 4 | 
| Kannada | kn | 
1, 2, 3, ಮತ್ತು 4 | 1, 2, 3, ಅಥವಾ 4 | 
| Kazakh | kk | 
1, 2, 3, 4 | 1, 2, 3, не болмаса 4 | 
| Khmer | km | 
1, 2, 3 និង 4 | 1, 2, 3 ឬ 4 | 
| Konkani | kok | 
1, 2, 3, 4 | 1, 2, 3, वा 4 | 
| Korean | ko | 
1, 2, 3 및 4 | 1, 2, 3 또는 4 | 
| Kurdish | ku | 
1, 2, 3 û 4 | 1, 2, 3 an 4 | 
| Kuvi | kxv | 
1, 2, 3, aḍe 4 | 1, 2, 3, aadtẽ 4 | 
| Kyrgyz | ky | 
1, 2, 3 жана 4 | 1, 2, 3 же 4 | 
| Ladin | lld | 
1, 2, 3 y 4 | 1, 2, 3 o 4 | 
| Lao | lo | 
1, 2, 3, 4 | 1, 2, 3 ຫຼື 4 | 
| Latvian | lv | 
1, 2, 3 un 4 | 1, 2, 3 vai 4 | 
| Lithuanian | lt | 
1, 2, 3 ir 4 | 1, 2, 3 ar 4 | 
| Lower Sorbian | dsb | 
1, 2, 3 a 4 | 1, 2, 3 abo 4 | 
| Macedonian | mk | 
1, 2, 3 и 4 | 1, 2, 3 или 4 | 
| Malay | ms | 
1, 2, 3 dan 4 | 1, 2, 3, atau 4 | 
| Malayalam | ml | 
1, 2, 3, 4 എന്നിവ | 1, 2, 3, അല്ലെങ്കിൽ 4 | 
| Marathi | mr | 
1, 2, 3 आणि 4 | 1, 2, 3, किंवा 4 | 
| Mongolian | mn | 
1, 2, 3, 4 | 1, 2, 3, 4 зэргийн аль нэг | 
| Māori | mi | 
1, 2, 3, 4 | 1, 2, 3, 4 rānei | 
| Nepali | ne | 
1,2, 3 र 4 | 1, 2, 3, वा 4 | 
| Nheengatu | yrl | 
1, 2, 3 asuí 4 | 1, 2, 3 u 4 | 
| Nigerian Pidgin | pcm | 
1, 2, 3, an 4 | 1, 2, 3 ọ 4 | 
| Norwegian | no | 
1, 2, 3 og 4 | 1, 2, 3 eller 4 | 
| Norwegian Bokmål | nb | 
1, 2, 3 og 4 | 1, 2, 3 eller 4 | 
| Norwegian Nynorsk | nn | 
1, 2, 3 og 4 | 1, 2, 3 eller 4 | 
| Odia | or | 
1, 2, 3, ଓ 4 | 1, 2, 3 କିମ୍ବା 4 | 
| Persian | fa | 
1، 2، 3، و 4 | 1، 2، 3، یا 4 | 
| Polish | pl | 
1, 2, 3 i 4 | 1, 2, 3 lub 4 | 
| Portuguese | pt | 
1, 2, 3 e 4 | 1, 2, 3 ou 4 | 
| Punjabi | pa | 
1, 2, 3 ਅਤੇ 4 | 1, 2, 3 ਜਾਂ 4 | 
| Quechua | qu | 
1, 2, 3, 4 | 1, 2, 3, utaq 4 | 
| Romanian | ro | 
1, 2, 3 și 4 | 1, 2, 3 sau 4 | 
| Romansh | rm | 
1, 2, 3 e 4 | 1, 2, 3 u 4 | 
| Russian | ru | 
1, 2, 3 и 4 | 1, 2, 3 или 4 | 
| Sardinian | sc | 
1, 2, 3 e 4 | 1, 2, 3 o 4 | 
| Scottish Gaelic | gd | 
1, 2, 3 agus 4 | 1, 2, 3 no 4 | 
| Serbian | sr | 
1, 2, 3 и 4 | 1, 2, 3 или 4 | 
| Sichuan Yi | ii | 
1、2、3ꌋꆀ4 | 1、2、3ꅀ4 | 
| Sindhi | sd | 
1، 2، 3، ۽ 4 | 1, 2, 3, يا 4 | 
| Sinhala | si | 
1, 2, 3, සහ 4 | 1, 2, 3, හෝ 4 | 
| Slovak | sk | 
1, 2, 3 a 4 | 1, 2, 3 alebo 4 | 
| Slovenian | sl | 
1, 2, 3 in 4 | 1, 2, 3 ali 4 | 
| Somali | so | 
1, 2, 3 iyo 4 | 1, 2, 3 ama 4 | 
| Spanish | es | 
1, 2, 3 y 4 | 1, 2, 3 o 4 | 
| Swahili | sw | 
1, 2, 3 na 4 | 1, 2, 3 au 4 | 
| Swampy Cree | csw | 
1, 2, 3, 4 | 1, 2, 3, ᐊᐍᑳ 4 | 
| Swedish | sv | 
1, 2, 3 och 4 | 1, 2, 3 eller 4 | 
| Syriac | syr | 
1 ܘ2 ܘ3 ܘ4 | 1 ܐܘ 2 ܐܘ 3 ܐܘ 4 | 
| Tajik | tg | 
1, 2, 3, 4 | 1, 2, 3, ё 4 | 
| Tamil | ta | 
1, 2, 3 மற்றும் 4 | 1, 2, 3 அல்லது 4 | 
| Tatar | tt | 
1, 2, 3 һәм 4 | 1, 2, 3, яки 4 | 
| Telugu | te | 
1, 2, 3 మరియు 4 | 1, 2, 3 లేదా 4 | 
| Thai | th | 
1 2 3 และ4 | 1, 2, 3 หรือ 4 | 
| Tigrinya | ti | 
1፣ 2፣ 3ን 4ን | 1፣ 2፣ 3 ወይ 4 | 
| Tongan | to | 
1 mo 2 mo 3 mo 4 | 1, 2, 3, pē 4 | 
| Turkish | tr | 
1, 2, 3 ve 4 | 1, 2, 3 veya 4 | 
| Turkmen | tk | 
1, 2, 3 we 4 | 1, 2, 3 ýa-da 4 | 
| Ukrainian | uk | 
1, 2, 3 і 4 | 1, 2, 3 або 4 | 
| Upper Sorbian | hsb | 
1, 2, 3 a 4 | 1, 2, 3 abo 4 | 
| Urdu | ur | 
1، 2، 3، اور 4 | 1، 2، 3، یا 4 | 
| Uzbek | uz | 
1, 2, 3 va 4 | 1, 2, 3 yoki 4 | 
| Venetian | vec | 
1, 2, 3 e 4 | 1, 2, 3, o 4 | 
| Vietnamese | vi | 
1, 2, 3 và 4 | 1, 2, 3 hoặc 4 | 
| Welsh | cy | 
1, 2, 3 a 4 | 1, 2, 3 neu 4 | 
| Yoruba | yo | 
1, 2, 3, 4 | 1, 2, 3, tabi 4 | 
| Yoruba (Benin) | yo_BJ | 
1, 2, 3, 4 | 1 pɛ̀lú 2, 3, tabi 4 | 
* The following English variants use no Oxford comma:
AG, AI, AT, AU,
BB, BE, BM, BS,
BW, BZ, CA, CC,
CH, CK, CM, CX,
CY, DE, DG, DK,
DM, ER, FI, FJ,
FK, FM, GB, GD,
GG, GH, GI, GM,
GY, HK, ID, IE,
IL, IM, IN, IO,
JE, JM, KE, KI,
KN, KY, LC, LR,
LS, MG, MO, MS,
MT, MU, MV, MW,
MY, NA, NF, NG,
NL, NR, NU, NZ,
PG, PK, PN, PW,
RW, SB, SC, SD,
SE, SG, SH, SI,
SL, SS, SX, SZ,
TC, TK, TO, TT,
TV, TZ, UG, VC,
VG, VU, WS, ZA,
ZM, and ZW.
Partially supported languages generally localize and()
but not or().
| Language | Code | and example | 
|---|---|---|
| Bodo | brx | 
1, 2, 3, आरो 4 | 
| Chakma | ccp | 
1, 2, 3 𑄃𑄳𑄃 4 | 
| Colognian | ksh | 
1, 2, 3 un 4 | 
| Dogri | doi | 
1, 2, 3, ते 4 | 
| Dzongkha | dz | 
1 དང་ 2 དང་ 3 དང་ 4 | 
| Ewe | ee | 
1, 2, 3, kple 4 | 
| Friulian | fur | 
1, 2, 3 e 4 | 
| Interlingue | ie | 
1, 2, 3, 4 | 
| Kashmiri | ks | 
1، 2، 3، تٕہ 4 | 
| Luxembourgish | lb | 
1, 2, 3 a(n) 4 | 
| Maithili | mai | 
1, 2, 3, और 4 | 
| Maltese | mt | 
1, 2, 3, u 4 | 
| Manipuri | mni | 
1, 2, 3 অমসুং 4 | 
| Ngomba | jgo | 
1, ŋ́gɛ 2, ŋ́gɛ 3, ḿbɛn ŋ́gɛ 4 | 
| Northern Sami | se | 
1, 2, 3 ja 4 | 
| Ossetic | os | 
1, 2, 3 ӕмӕ 4 | 
| Pashto | ps | 
1، 2، 3، او 4 | 
| Sanskrit | sa | 
1, 2, 3, तथा 4 | 
| Sundanese | su | 
1, 2, 3, sareng 4 | 
| Swiss German | gsw | 
1, 2, 3 und 4 | 
| Walser | wae | 
1, 2, 3 und 4 | 
| Western Balochi | bgn | 
1، 2، 3، و 4 | 
| Western Frisian | fy | 
1, 2, 3 en 4 | 
| Yakut | sah | 
1, 2, 3 уонна 4 | 
| Yiddish | yi | 
1, 2, 3 און 4 | 
| Zulu | zu | 
1, 2, 3, ne-4 | 
Hex sticker image by Flavia Rossell Hayes.
Please note that and is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.