
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.