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 |
| 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 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.
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.