Kod
source("code/common.R")
source("code/common.R")
library(dplyr)
library(ggplot2)
library(tidyr)
= readr::read_csv("data/gapminder_1950_2023.csv")
gm0 = select(gm0, Kraj, Rok, Ocz_dl_zycia, PKB_na_osobe)
df1 = filter(gm0, Rok == 2019) df0sel
= filter(df1, Kraj %in% c("Polska", "Niemcy", "Francja", "Włochy", "Hiszpania"), Rok %in% c(2019, 2020, 2021))
df1sel_192021 ggplot(df1sel_192021, aes(Kraj, PKB_na_osobe, fill = Rok)) +
geom_col()
$Rok = as.factor(df1sel_192021$Rok)
df1sel_192021ggplot(df1sel_192021, aes(Kraj, PKB_na_osobe, fill = Rok)) +
geom_col()
# lub
# ggplot(df1sel_192021, aes(Kraj, PKB_na_osobe, fill = as.factor(Rok))) +
# geom_col()
library(forcats)
= filter(df1, Kraj %in% c("Polska", "Niemcy", "Francja", "Włochy", "Hiszpania"), Rok %in% c(2019))
df1sel_19 $Kraj df1sel_19
[1] "Francja" "Niemcy" "Włochy" "Polska" "Hiszpania"
$Kraj = fct_reorder(df1sel_19$Kraj, df1sel_19$PKB_na_osobe, max)
df1sel_19$Kraj df1sel_19
[1] Francja Niemcy Włochy Polska Hiszpania
Levels: Polska Hiszpania Włochy Francja Niemcy
ggplot(data = df1sel_19, aes(Kraj, PKB_na_osobe)) +
geom_col()
ggplot(df1sel_192021, aes(fct_reorder(Kraj, PKB_na_osobe, sum), PKB_na_osobe, fill = Rok)) +
geom_col()
Pęlta for
jest jednym z najczęściej używanych wyrażeń w językach programowania, którego celem jest powtórzenie pewnej operacji o znaną liczbę razy.
Pęlta for
jest zbudowana z dwóch elementów: nagłówka określającego powtórzenia, oraz ciała zawierającego obliczenia.
for (element in wektor) {
przetwarzanie elementu }
Stworzenie oddzielnego wykresu dla każdego roku:
= unique(gm0$Rok)
unique_years = unique_years[1:20] unique_years
for (i in unique_years){
print(i)
}
[1] 1950
[1] 1951
[1] 1952
[1] 1953
[1] 1954
[1] 1955
[1] 1956
[1] 1957
[1] 1958
[1] 1959
[1] 1960
[1] 1961
[1] 1962
[1] 1963
[1] 1964
[1] 1965
[1] 1966
[1] 1967
[1] 1968
[1] 1969
Stworzenie oddzielnego wykresu dla każdego roku:
for (i in unique_years){
= subset(gm0, Rok == i)
gapminder_year = ggplot(gapminder_year, aes(x = PKB_na_osobe, y = Ocz_dl_zycia, color = Region)) +
gg geom_point() +
labs(x = "PKB na osobę (USD, 2007)",
y = "Oczekiwana długość życia (lata)",
color = "Kontynent")
print(gg)
}
Stworzenie oddzielnego wykresu dla każdego roku:
for (i in unique_years){
= subset(gm0, Rok == i)
gapminder_year = ggplot(gapminder_year, aes(x = PKB_na_osobe, y = Ocz_dl_zycia, color = Region)) +
gg geom_point() +
labs(x = "PKB na osobę (USD, 2007)",
y = "Oczekiwana długość życia (lata)",
color = "Kontynent",
title = paste0("Rok ", i))
print(gg)
}
Zapisanie oddzielnego wykresu dla każdego roku:
for (i in unique_years){
= subset(gm0, Rok == i)
gapminder_year = ggplot(gapminder_year, aes(x = PKB_na_osobe, y = Ocz_dl_zycia, color = Region)) +
gg geom_point() +
labs(x = "PKB na osobę (USD, 2007)",
y = "Oczekiwana długość życia (lata)",
color = "Kontynent",
title = paste0("Rok ", i))
ggsave(filename = paste0("Wykres_rok_", i, ".png"), plot = gg)
}
Języki obsługujące programowanie funkcyjne posiadają jednak szereg narzędzi do przetwarzania funkcji, które zbiorczo są nazywane funkcjonałami (ang. functional). Funkcjonały to funkcje, które przyjmują inne funkcje jako argumenty.
W R istnieje cała rodzina funkcji poświęcona programowaniu funkcyjnemu. Oprócz najczęściej używanych, lapply()
i apply()
, istnieją również takie funkcje jak sapply()
, vapply()
, tapply()
, mapply()
i inne. Dodatkowo, pakiet purrr oferuje ulepszone i rozszerzone narzędzia do programowania funkcyjnego.
Jednym z podstawowych funkcjonałów w R jest lapply()
. Funkcjonał lapply()
przyjmuje jako pierwszy argument wektor atomowy lub listę, a następnie przetwarza go używając funkcji podanej jako drugi argument FUN
.
Poniżej, lapply()
wykonuje funkcję konwersja_f_to_c()
na kolejnych elementach listy pomiary_f_lista
i zwraca nową listę zawierającą wyniki.
= unique(gm0$Rok)
unique_years lapply(unique_years, plot_year)
Stworzenie oddzielnego wykresu dla każdego roku:
= function(my_year, my_shape){
plot_year2 = subset(gm0, Rok == my_year)
gapminder_year = ggplot(gapminder_year, aes(x = PKB_na_osobe, y = Ocz_dl_zycia, color = Region)) +
gg geom_point(shape = my_shape) +
labs(x = "PKB na osobę (USD, 2007)", y = "Oczekiwana długość życia (lata)",
color = "Kontynent", title = paste0("Rok ", my_year))
gg }
Stworzenie oddzielnego wykresu dla każdego roku:
plot_year2(1952, 3)
= unique(gm0$Rok)
unique_years lapply(unique_years, plot_year2, my_shape = 3)