Exercices

sur les fonctions

Affichage d’un pays

Créer une fonction affichePays() qui prend en paramètre un nom de pays et un continent, et qui l’affiche sur une ligne (de type pays (continent))

affichePays <- function(pays, continent) {
    cat(pays, " (", continent, ")\n", sep = "")
}
affichePays("France", "Europe")
France (Europe)

Ajouter un paramètre à cette fonction, qui sera l’année d’indépendance (avec la valeur NA par défaut)

  • Si l’année est NA, alors on affichera pays (continent)
  • sinon, on affichera : pays (continent - indépendance en XXXX)
affichePays <- function(pays, continent, annee = NA) {
    cat(pays, " (", continent, sep = "")
    if (!is.na(annee)) {
        cat(" - independance en", annee)
    }
    cat(")\n")
}
affichePays("France", "Europe")
France (Europe)
affichePays("France", "Europe", 843)
France (Europe - independance en 843)
affichePays("France", "Europe", NA)
France (Europe)

Calcul du ratio

Créer une fonction avec les caractéristiques suivantes :

  • Paramètres :
    • une valeur (population d’un pays)
    • un vecteur de valeur (population de plusieurs villes)
  • Retour :
    • le ratio entre la somme des valeurs du vecteur (des populations des villes) et la première valeur (population d’un pays)
  • Par exemple :
    • ratio(10, c(1, 2, 3)) renverra .6
ratio <- function(pop.pays, pop.villes) {
    r = sum(pop.villes) / pop.pays
    return(r)
}
ratio(10, 1:3)
[1] 0.6

world

A partir des données présentes dans le fichier world-liste.RData, répondre aux questions suivantes. Ces données concernent les pays dans le monde (à la fin du siècle dernier), et sont représentées sous forme de liste dans l’objet Country.liste.

# chargement des données
load("donnees/World/world-liste.Rdata")

Donner le nombre de pays représentés

length(Country.liste)
[1] 239

Calculer la population mondiale

Deux façons ici

Reduce(
    function(a, b) {
        a$Population = a$Population + b$Population
        return(a)
    },
    Country.liste,
    list(Population = 0)
)
$Population
[1] 6078749450

ou

sum(
    sapply(
        Country.liste,
        function(p) { return(as.numeric(p$Population)) }
    )
)
[1] 6078749450

Affichage de tous les pays

Utiliser la fonction affichePays() créée précédemment dans une fonction anonyme, pour afficher les informations des pays (un pays par ligne)

invisible(
    lapply(
        Country.liste,
        function(p) {
            affichePays(p$Name, p$Continent, p$IndepYear)
        }
    )
)
Aruba (North America)
Afghanistan (Asia - independance en 1919)
Angola (Africa - independance en 1975)
Anguilla (North America)
Albania (Europe - independance en 1912)
Andorra (Europe - independance en 1278)
Netherlands Antilles (North America)
United Arab Emirates (Asia - independance en 1971)
Argentina (South America - independance en 1816)
Armenia (Asia - independance en 1991)
American Samoa (Oceania)
Antarctica (Antarctica)
French Southern territories (Antarctica)
Antigua and Barbuda (North America - independance en 1981)
Australia (Oceania - independance en 1901)
Austria (Europe - independance en 1918)
Azerbaijan (Asia - independance en 1991)
Burundi (Africa - independance en 1962)
Belgium (Europe - independance en 1830)
Benin (Africa - independance en 1960)
Burkina Faso (Africa - independance en 1960)
Bangladesh (Asia - independance en 1971)
Bulgaria (Europe - independance en 1908)
Bahrain (Asia - independance en 1971)
Bahamas (North America - independance en 1973)
Bosnia and Herzegovina (Europe - independance en 1992)
Belarus (Europe - independance en 1991)
Belize (North America - independance en 1981)
Bermuda (North America)
Bolivia (South America - independance en 1825)
Brazil (South America - independance en 1822)
Barbados (North America - independance en 1966)
Brunei (Asia - independance en 1984)
Bhutan (Asia - independance en 1910)
Bouvet Island (Antarctica)
Botswana (Africa - independance en 1966)
Central African Republic (Africa - independance en 1960)
Canada (North America - independance en 1867)
Cocos (Keeling) Islands (Oceania)
Switzerland (Europe - independance en 1499)
Chile (South America - independance en 1810)
China (Asia - independance en -1523)
Côte d’Ivoire (Africa - independance en 1960)
Cameroon (Africa - independance en 1960)
Congo, The Democratic Republic of the (Africa - independance en 1960)
Congo (Africa - independance en 1960)
Cook Islands (Oceania)
Colombia (South America - independance en 1810)
Comoros (Africa - independance en 1975)
Cape Verde (Africa - independance en 1975)
Costa Rica (North America - independance en 1821)
Cuba (North America - independance en 1902)
Christmas Island (Oceania)
Cayman Islands (North America)
Cyprus (Asia - independance en 1960)
Czech Republic (Europe - independance en 1993)
Germany (Europe - independance en 1955)
Djibouti (Africa - independance en 1977)
Dominica (North America - independance en 1978)
Denmark (Europe - independance en 800)
Dominican Republic (North America - independance en 1844)
Algeria (Africa - independance en 1962)
Ecuador (South America - independance en 1822)
Egypt (Africa - independance en 1922)
Eritrea (Africa - independance en 1993)
Western Sahara (Africa)
Spain (Europe - independance en 1492)
Estonia (Europe - independance en 1991)
Ethiopia (Africa - independance en -1000)
Finland (Europe - independance en 1917)
Fiji Islands (Oceania - independance en 1970)
Falkland Islands (South America)
France (Europe - independance en 843)
Faroe Islands (Europe)
Micronesia, Federated States of (Oceania - independance en 1990)
Gabon (Africa - independance en 1960)
United Kingdom (Europe - independance en 1066)
Georgia (Asia - independance en 1991)
Ghana (Africa - independance en 1957)
Gibraltar (Europe)
Guinea (Africa - independance en 1958)
Guadeloupe (North America)
Gambia (Africa - independance en 1965)
Guinea-Bissau (Africa - independance en 1974)
Equatorial Guinea (Africa - independance en 1968)
Greece (Europe - independance en 1830)
Grenada (North America - independance en 1974)
Greenland (North America)
Guatemala (North America - independance en 1821)
French Guiana (South America)
Guam (Oceania)
Guyana (South America - independance en 1966)
Hong Kong (Asia)
Heard Island and McDonald Islands (Antarctica)
Honduras (North America - independance en 1838)
Croatia (Europe - independance en 1991)
Haiti (North America - independance en 1804)
Hungary (Europe - independance en 1918)
Indonesia (Asia - independance en 1945)
India (Asia - independance en 1947)
British Indian Ocean Territory (Africa)
Ireland (Europe - independance en 1921)
Iran (Asia - independance en 1906)
Iraq (Asia - independance en 1932)
Iceland (Europe - independance en 1944)
Israel (Asia - independance en 1948)
Italy (Europe - independance en 1861)
Jamaica (North America - independance en 1962)
Jordan (Asia - independance en 1946)
Japan (Asia - independance en -660)
Kazakstan (Asia - independance en 1991)
Kenya (Africa - independance en 1963)
Kyrgyzstan (Asia - independance en 1991)
Cambodia (Asia - independance en 1953)
Kiribati (Oceania - independance en 1979)
Saint Kitts and Nevis (North America - independance en 1983)
South Korea (Asia - independance en 1948)
Kuwait (Asia - independance en 1961)
Laos (Asia - independance en 1953)
Lebanon (Asia - independance en 1941)
Liberia (Africa - independance en 1847)
Libyan Arab Jamahiriya (Africa - independance en 1951)
Saint Lucia (North America - independance en 1979)
Liechtenstein (Europe - independance en 1806)
Sri Lanka (Asia - independance en 1948)
Lesotho (Africa - independance en 1966)
Lithuania (Europe - independance en 1991)
Luxembourg (Europe - independance en 1867)
Latvia (Europe - independance en 1991)
Macao (Asia)
Morocco (Africa - independance en 1956)
Monaco (Europe - independance en 1861)
Moldova (Europe - independance en 1991)
Madagascar (Africa - independance en 1960)
Maldives (Asia - independance en 1965)
Mexico (North America - independance en 1810)
Marshall Islands (Oceania - independance en 1990)
Macedonia (Europe - independance en 1991)
Mali (Africa - independance en 1960)
Malta (Europe - independance en 1964)
Myanmar (Asia - independance en 1948)
Mongolia (Asia - independance en 1921)
Northern Mariana Islands (Oceania)
Mozambique (Africa - independance en 1975)
Mauritania (Africa - independance en 1960)
Montserrat (North America)
Martinique (North America)
Mauritius (Africa - independance en 1968)
Malawi (Africa - independance en 1964)
Malaysia (Asia - independance en 1957)
Mayotte (Africa)
Namibia (Africa - independance en 1990)
New Caledonia (Oceania)
Niger (Africa - independance en 1960)
Norfolk Island (Oceania)
Nigeria (Africa - independance en 1960)
Nicaragua (North America - independance en 1838)
Niue (Oceania)
Netherlands (Europe - independance en 1581)
Norway (Europe - independance en 1905)
Nepal (Asia - independance en 1769)
Nauru (Oceania - independance en 1968)
New Zealand (Oceania - independance en 1907)
Oman (Asia - independance en 1951)
Pakistan (Asia - independance en 1947)
Panama (North America - independance en 1903)
Pitcairn (Oceania)
Peru (South America - independance en 1821)
Philippines (Asia - independance en 1946)
Palau (Oceania - independance en 1994)
Papua New Guinea (Oceania - independance en 1975)
Poland (Europe - independance en 1918)
Puerto Rico (North America)
North Korea (Asia - independance en 1948)
Portugal (Europe - independance en 1143)
Paraguay (South America - independance en 1811)
Palestine (Asia)
French Polynesia (Oceania)
Qatar (Asia - independance en 1971)
Réunion (Africa)
Romania (Europe - independance en 1878)
Russian Federation (Europe - independance en 1991)
Rwanda (Africa - independance en 1962)
Saudi Arabia (Asia - independance en 1932)
Sudan (Africa - independance en 1956)
Senegal (Africa - independance en 1960)
Singapore (Asia - independance en 1965)
South Georgia and the South Sandwich Islands (Antarctica)
Saint Helena (Africa)
Svalbard and Jan Mayen (Europe)
Solomon Islands (Oceania - independance en 1978)
Sierra Leone (Africa - independance en 1961)
El Salvador (North America - independance en 1841)
San Marino (Europe - independance en 885)
Somalia (Africa - independance en 1960)
Saint Pierre and Miquelon (North America)
Sao Tome and Principe (Africa - independance en 1975)
Suriname (South America - independance en 1975)
Slovakia (Europe - independance en 1993)
Slovenia (Europe - independance en 1991)
Sweden (Europe - independance en 836)
Swaziland (Africa - independance en 1968)
Seychelles (Africa - independance en 1976)
Syria (Asia - independance en 1941)
Turks and Caicos Islands (North America)
Chad (Africa - independance en 1960)
Togo (Africa - independance en 1960)
Thailand (Asia - independance en 1350)
Tajikistan (Asia - independance en 1991)
Tokelau (Oceania)
Turkmenistan (Asia - independance en 1991)
East Timor (Asia)
Tonga (Oceania - independance en 1970)
Trinidad and Tobago (North America - independance en 1962)
Tunisia (Africa - independance en 1956)
Turkey (Asia - independance en 1923)
Tuvalu (Oceania - independance en 1978)
Taiwan (Asia - independance en 1945)
Tanzania (Africa - independance en 1961)
Uganda (Africa - independance en 1962)
Ukraine (Europe - independance en 1991)
United States Minor Outlying Islands (Oceania)
Uruguay (South America - independance en 1828)
United States (North America - independance en 1776)
Uzbekistan (Asia - independance en 1991)
Holy See (Vatican City State) (Europe - independance en 1929)
Saint Vincent and the Grenadines (North America - independance en 1979)
Venezuela (South America - independance en 1811)
Virgin Islands, British (North America)
Virgin Islands, U.S. (North America)
Vietnam (Asia - independance en 1945)
Vanuatu (Oceania - independance en 1980)
Wallis and Futuna (Oceania)
Samoa (Oceania - independance en 1962)
Yemen (Asia - independance en 1918)
Yugoslavia (Europe - independance en 1918)
South Africa (Africa - independance en 1910)
Zambia (Africa - independance en 1964)
Zimbabwe (Africa - independance en 1980)

Nouvelle liste avec ratio

Utiliser la fonction de calcul de ratio de la population pour savoir pour chaque pays le ratio entre la population des villes de celui-ci et la population du pays

Idéalement, créer une nouvelle liste qui ajoute cette information aux autres, pour chaque pays

Country.liste2 = lapply(
    Country.liste,
    function(p) {
        p$Ratio = ratio(p$Population, p$City$Population)
        return(p)
    }
)

Ici, on créé une nouvelle liste avec uniquement le nom et le ratio de chaque pays.

Country.ratio = lapply(
    Country.liste,
    function(p) {
        res = list(
            Name = p$Name,
            Ratio = ratio(p$Population, p$City$Population)
        )
        return(res)
    }
)

Pays avec ratio > 1

Identifier quels pays ont un ratio supérieur à 1 avec la nouvelle liste créée

Filter(
    function(p) { return(p$Ratio > 1)},
    Country.ratio
)
[[1]]
[[1]]$Name
[1] "Cocos (Keeling) Islands"

[[1]]$Ratio
[1] 1.116667


[[2]]
[[2]]$Name
[1] "Gibraltar"

[[2]]$Ratio
[1] 1.081


[[3]]
[[3]]$Name
[1] "Singapore"

[[3]]$Ratio
[1] 1.126362