README.md

and

r-universe status
badge License:
MIT R build
status Dependencies

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.

Installation

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")

Usage

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"

Handling the nuances

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"

or-separated lists

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"

Hardcoding language

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"

Languages

Fully supported languages

| Language | Code | and example | or example | |:-------------------------------------------------------------------------------------------------------------------------------|:-----------------|:-----------------|:---------------------------| | Afrikaans | af | 1, 2, 3 en 4 | 1, 2, 3 of 4 | | Albanian | sq | 1, 2, 3 dhe 4 | 1, 2, 3 ose 4 | | Amharic | am | 1፣ 2፣ 3, እና 4 | 1፣ 2፣ 3፣ ወይም 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 | | 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 | | 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 | | Kyrgyz | ky | 1, 2, 3 жана 4 | 1, 2, 3 же 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 зэргийн аль нэг | | 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 | | 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 | | Swedish | sv | 1, 2, 3 och 4 | 1, 2, 3 eller 4 | | Syriac | syr | ‏1, 2, 3، ܘ4‎ | ‏1, 2, 3، ܝܐ 4‎ | | Tamil | ta | 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 | | 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 pẹ̀lú 2, 3, tabi 4 | | Yoruba (Benin) | yo_BJ | 1, 2, 3, 4 | 1 pɛ̀lú 2, 3, tabi 4 |

* The following English variants use an Oxford comma in addition to en_GB: en_AG, en_AI, en_AT, en_AU, en_BB, en_BE, en_BM, en_BS, en_BW, en_BZ, en_CA, en_CC, en_CH, en_CK, en_CM, en_CX, en_CY, en_DE, en_DG, en_DK, en_DM, en_ER, en_FI, en_FJ, en_FK, en_FM, en_GD, en_GG, en_GH, en_GI, en_GM, en_GY, en_HK, en_IE, en_IL, en_IM, en_IN, en_IO, en_JE, en_JM, en_KE, en_KI, en_KN, en_KY, en_LC, en_LR, en_LS, en_MG, en_MO, en_MS, en_MT, en_MU, en_MV, en_MW, en_MY, en_NA, en_NF, en_NG, en_NL, en_NR, en_NU, en_NZ, en_PG, en_PK, en_PN, en_PW, en_RW, en_SB, en_SC, en_SD, en_SE, en_SG, en_SH, en_SI, en_SL, en_SS, en_SX, en_SZ, en_TC, en_TK, en_TO, en_TT, en_TV, en_TZ, en_UG, en_VC, en_VG, en_VU, en_WS, en_ZA, en_ZM, and en_ZW.

Partially supported languages

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 | | Igbo | ig | 1, 2, 3, na 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 | | Tatar | tt | 1, 2, 3 һәм 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.



Try the and package in your browser

Any scripts or data that you put into this service are public.

and documentation built on Sept. 24, 2023, 9:06 a.m.