# instalacja pakietu z przykładowymi zbiorami danych
      # o ile nie jest zainstalowany
if (! "mlbench" %in% row.names(installed.packages()))
  install.packages("mlbench")
      # załadowanie tego pakietu
library(mlbench)
      # UWAGA: w zależności od środowiska instalacji i uprawnień użytkownika
      # może okazać się wskazanie katalogu do przechowywania instalowanych pakietów
      # za pomocą argumentu lib.loc do funkcji install.packages i library

      # sprawdzenie jakie zbiory danych są dostępne
data()
      # załadowanie wybranego zbioru danych
data(HouseVotes84)
      # sprawdźmy, czy na pewno jest
ls()

      # nazwy kolumn
names(HouseVotes84)
      # liczba kolumn
ncol(HouseVotes84)
      # liczba wierszy
nrow(HouseVotes84)
      # charakterystyka danych
summary(HouseVotes84)

      # pierwszy wiersz
HouseVotes84[1,]
      # pierwsza kolumna
HouseVotes84[,1]
      # wartość w pierwszej kolumnie i pierwszym wierszu
HouseVotes84[1,1]
      # odwołanie do kolumny przez jej nazwę
HouseVotes84$Class
      # można również inaczej, gdy nazwa kolumny jest wartością zmiennej
cn <- "Class"
HouseVotes84[[cn]] 
      # pierwszy element wybranej kolumny
HouseVotes84$Class[1]

      # użycie wyrażeń logicznych (warunków) jako indeksów
HouseVotes84[HouseVotes84$Class=="democrat",]
      # zliczanie przez sumowanie wartości logicznych
sum(HouseVotes84$Class=="democrat") 
      # średnia absencja w głosowaniach przedstawicieli każdej partii
sum(is.na(HouseVotes84[HouseVotes84$Class=="republican",]))/sum(HouseVotes84$Class=="republican")
sum(is.na(HouseVotes84[HouseVotes84$Class=="democrat",]))/sum(HouseVotes84$Class=="democrat")

      # rozkład głosowań obu partii
democrats <- HouseVotes84[HouseVotes84$Class=="democrat",]
republicans <- HouseVotes84[HouseVotes84$Class=="republican",]
summary(democrats)
summary(republicans)

      # łatwo zauważyć, że np. kolumna V4 dobrze różnicuje kategorie
      # zdefiniujmy funkcję implementującą oparty na tym spostrzeżeniu model
ruleV4 <- function(data) { factor(ifelse(data$V4 == "y", "republican", "democrat"), levels=c("democrat", "republican")) }
      # sprawdzenie rozkładu zgodności kategorii prawdziwej i przewidywanej przez model
summary(ruleV4(HouseVotes84) == HouseVotes84$Class)

      # inny przykładowy zbiór danych
data(Glass)
      # charakterystyka tego zbioru
summary(Glass)