# `lingtypology`: Glottolog functions

#### George Moroz

#### 2020-10-04

This package is based on the Glottolog database (v. 4.1), so `lingtypology` has several functions for accessing data from that database.

### 1. Command name’s syntax

Most of the functions in `lingtypology` have the same syntax: what you need.what you have. Most of them are based on language name.

- aff.lang() — get affiliation by language
- area.lang() — get macro area by language
- iso.lang() — get ISO 639-3 code by language
- gltc.lang() — get glottocode (identifier for a language in the Glottolog database) code by language
- lat.lang() — get latitude by language
- long.lang() — get longitude by language

Some of them help to define a vector of languages.

- lang.aff() — get language by affiliation
- lang.iso() — get language by ISO 639-3 code
- lang.gltc() — get language by glottocode

Additionally there are some functions to convert glottocodes to ISO 639-3 codes and vice versa:

- gltc.iso() — get glottocode by ISO 639-3 code
- iso.gltc() — get ISO 639-3 code by glottocode

The most important functionality of `lingtypology` is the ability to create interactive maps based on features and sets of languages (see the third section):

- map.feature()

Glottolog database (v. 4.1) provides `lingtypology` with language names, ISO codes, glottocodes, affiliation, macro area, coordinates, and much information. This set of functions doesn’t have a goal to cover all possible combinations of functions. Check out additional information that is preserved in the version of the Glottolog database used in `lingtypology`:

    names(glottolog)

    ## [1] "affiliation" "glottocode"  "language"    "iso"         "level"
    ## [6] "area"        "latitude"    "longitude"

Using R functions for data manipulation you can create your own database for your purpose.

### 2. Using base functions

All functions introduced in the previous section are regular functions, so they can take the following objects as input:

- a regular string

    iso.lang("Adyghe")

    ## Adyghe
    ##  "ady"

    lang.iso("ady")

    ##      ady
    ## "Adyghe"

    lang.aff("West Caucasian")

    ## character(0)

I would like to point out that you can create strings in R using single or double quotes. Since inserting single quotes in a string created with single quotes causes an error in R, I use double quotes in my tutorial. You can use single quotes, but be careful and remember that `'Ma'ya'` is an incorrect string in R.

- a vector of strings

    area.lang(c("Adyghe", "Aduge"))

    ##    Adyghe     Aduge
    ## "Eurasia"  "Africa"

    lang <- c("Adyghe", "Russian")
    aff.lang(lang)

    ##                                                                  Adyghe
    ##                                               "Abkhaz-Adyge,Circassian"
    ##                                                                 Russian
    ## "Indo-European,Classical Indo-European,Balto-Slavic,Slavic,East Slavic"

- other functions. For example, let’s try to get a vector of ISO codes for the Circassian languages

    iso.lang(lang.aff("Circassian"))

    ##    Adyghe Kabardian
    ##     "ady"     "kbd"

If you are new to R, it is important to mention that you can create a table with languages, features and other parametres with any spreadsheet software you used to work. Then you can import the created file to R using standard tools.

### 3. Spell Checker: look carefully at warnings!

All functions which take a vector of languages are enriched with a kind of a spell checker. If a language from a query is absent in the database, functions return a warning message containing a set of candidates with the minimal Levenshtein distance to the language from the query.

    aff.lang("Adyge")

    ## Warning: Language Adyge is absent in our version of the Glottolog database. Did
    ## you mean Adyghe, Aduge?

    ## Adyge
    ##    NA