Zum Inhalt springen

R Programmierung: R-Befehle Sammlung

    Kommentar

    # Ich bin ein Kommentar

    Ausgabe

    • print(„Hello World“)
    • cat(„Hello“, „World“)

    Information über R-Befehle

    # Informationen über einen bestimmten Befehlt z.B. ‚which‘ ermitteln
    • apropos(„which“)
    • help(which)
    • ?which
    • RSiteSearch(„which“)

    Befehl-Historie & Exit

    # Zuvor eingegebene Befehle anzeigen
    history()

    # RStudio Verlassen
    q()

    Arbeitsverzeichnis

    # Mein R Arbeitsverzeichnis anzeigen
    getwd()

    # Arbeitsverzeichnis ändern

    # Ein neues Arbeitsverzeichnis angeben

    setwd(‚PFAD‘)

    R-Befehle/Script Speichern

    # R-Befehle bzw. R-Scribt lokal speichern
    save (myTable, file=“C:/Users/axxKreis/Desktop/myTable.RData“)

    R-Befehle/Script laden

    # Persistierte Ergebnisse laden
    load (file=“C:/Users/axxKreis/Desktop/myTable.RData“)

    CSV-Datei laden

    # Eine Tabelle (CSV-Datei) laden
    myCsvTable <- read.table(file=“C:/[PFAD]/myCsvTable.csv“, header=TRUE, sep=“;“)
    oder
    myCsvTable <- read.csv(file=“C:/[PFAD]/myCsvTable.csv“, header=TRUE, sep=“;“)

    Bibliotheken

    Informationen über vorhandene Bibliothelen

    # Gibt an, wo die Bibiotheken installiert sind
    .libPaths()

    # Die installierten basis Pakete anzeigen lassen
    getOption(„defaultPackages“)

    # Die Liste alle Pakete, die aktuell geladen wurden
    (.packages())

    # Alle Pakete, die bereits installiert wurden und zur Verfügung stehen
    (.packages(all.available=TRUE))
    oder
    library() # Für detaillierte Informationen
    oder
    installed.packages()

    # Ort, an der sich die installierten Pakete bzw. libs befinden
    Sys.getenv(„R_LIBS_USER“)

    Bibliothek laden

    # Existierende Bibliothek z.B. rpart laden
    library(rpart)

    Bibliothek installieren

    install.packages(c(„tree“,“maptree“))
    install.packages(„Name der Bibiothek“, dependencies=TRUE)

    Öffentliche Liste von R Bibliotheken

    https://cran.r-project.org/web/packages/available_packages_by_date.html

    Installierte Pakete updaten

    update.packages()

    Bibliotheken beim Start von R-Studio laden

    # Mit einem Texteditor im Admin-Modus die folgende Datei anpassen: C:\Program Files\R\R-3.2.4\etc\Rprofile.site
    # Innerhalb der Datei die gewünschten Bibliotheken eintragen
    library(DBI)
    library(FSelector)
    library(ggplot2)
    library(lattice)
    library(RODBC)
    library(RMySQL)
    library(lattice)

    Datenbank Bibliotheken installieren und laden

    RODBC entspricht ODBC
    DBI entspricht  JDB
    RMySQL entspricht  MySQL

    # DB Packages installieren
    install.packages(„RODBC“)
    install.packages(„DBI“)
    install.packages(„RMySQL“) # MySQL

    # Installiertes Paket laden
    library(RODBC) # Im Fehlerfall wird eine Meldung angezeigt. Ansonsten keine Ausgabe.
    library(DBI)
    library(RMySQL)

    Bibliothek für Datenverarbeitung

    install.packages(„FSelector“)

    Bestimmung der Entropy für ‚target value‘

    entropy (entropyTargetValue)

    Information Gain

    information.gain(data)

    # ‚Information Gain‘ für das Attribut ‚xxx‘ in Bezug auf das ‚target value‘ bestimmen
    information.gain (head(data[c(„TARGET.VALUE“,“xxx“)],length(data$TARGET.VALUE)))

    Bibliothek für Visiualisierungs

    # Visualisierungspakete
    • lattice # Muss installiert und geladen werden
    • ggplot2

    Datentypen

    # Am meisten verwendeten Datentypen

    • Vectors
      • Logical
      • Numeric
      • Integer
      • Complex (1+2x)
      • Character
      • Raw (Hexadezimal)
    • Lists
    • Matrices
    • Arrays
    • Factors

    Variablen (Symbol)

    Deklaration

    a <- 1
    oder
    a = 1

    # Funktionale Schreibweise
    ‚<-‚(a,1)

    Alle Variablen anzeigen

    ls()

    # Alle Variablen, die zum Pattern passen anzeigen
    ls(pattern = „var“)

    # Alle Variablen inkl. die versteckten Dateien anzeigen
    ls (all.names = TRUE)

    Variable/n ‚a‘ löschen

    rm(a)

    # Alle Variablen löschen
    rm(list = ls())

    Variablen miteinander vergleichen

    a = 1
    b = 2
    a==b # FALSE

    Operatoren

    Arithmetische Operatoren


    +
    *
    /
    %%
    %/%
    ^

    Relationale Operatoren

    >
    <
    ==
    <=
    >=
    !=

    Logische Operatoren

    &
    |
    !
    &&
    ||

    Zuweisungsoperatoren

    <− (lokal)
    =
    <<− (global)
    ->
    ->>

    Sonstige Operatoren

    :
    %in%
    %*%

    Bespiele

    # Module (%%)

    a = c(4, 8, 12)
    b = c(12, 8, 4)
    a%%b

    Ergebnis:
    4 0 0

    # Wie oft passen die Werte aus Vektor ‚a‘ in Vector ‚b‘

    a = c(4, 8, 12)
    b = c(12, 8, 4)
    a%/%b

    Ergebnis:
    0 1 3
    # Vektor ‚a‘ um die Zahlen in Vektor ‚b‘ exponieren z.B. 2*2*2=8; 3*3=9; 4*4=16
    a = c(2, 3, 4)
    b = c(3, 2, 2)
    a^b

    Ergebnis:
    8 9 16

    # Kontrollieren, ob die Werte von Vektor ‚a‘ größer sind als die von Vektor ‚b‘
    a = c(4, 8, 12)
    b = c(12, 8, 4)
    a>b

    Ergebnis:
    FALSE FALSE TRUE
    # Gibt true aus, falls die Werte von Vaktor ‚a‘ und ‚b‘ TRUE sein sollten
    a = c(2, TRUE, 4)
    b = c(3, FALSE, 2)
    a&b

    Ergebnis:
    TRUE FALSE TRUE

    # Gibt TRUE aus, falls ein Wert eines Vektors TRUE sein sollte z.B. 0 und 0 = FALSE oder FALSE und FALSE = FALSE
    a = c(3,0,TRUE,FALSE, 0)
    b = c(4,0,FALSE,FALSE, 0.1)
    a|b

    Ergebnis:
    TRUE FALSE TRUE FALSE TRUE

    # Beinhaltet ein Vektor einen bestimmten Wert
    a = c(3,0,TRUE,FALSE, 0)
    3%in%a

    Ergebnis:
    TRUE
    String

    String

    # einfache Anführungsstriche werden intern in doppelte umgewandelt
    ‚hello‘
    „Hello“

    Länger einer Zeichenkette ermitteln

    nchar(a)

    Substring

    a=“abcdefg“
    substr(a,3,5)

    Ergebnis:
    cde

    String Verkettung

    a <- „Hello“
    b <- ‚How‘
    c <- „are you?“

    paste(a,b,c)
    „Hello How are you?“

    paste(a,b,c, sep = „@“)
    „Hello@How@are you?“

    paste(a,b,c, sep = „“, collapse = „“)
    „HelloHoware you? “

    5 Stelligen String erzeugen

    format(18, width = 5)
    [1] “ 18″

    Ausrichtung der Ausgabe

    format(„Hello“, width = 8, justify = „centre“) #left, right, centre, none
    “ Hello “

    String groß und klein schreiben

    x = „Hello“
    toupper(x)
    tolower(x)

    Faktor

    v = c(„thomas“, „thomas“, „thomas“, „linda“)

    levels(v)
    NULL

    typeof(v)
    [1] „character“

    class(v)
    [1] „character“

    # Faktor Umwandlung & kontrollieren

    v = factor(v)

    is.factor(v)
    TRUE

    levels(v)
    „linda“ „thomas“

    typeof(v)
    „integer“

    class(v)
    „factor“

    # Innerhalb von ‚data frame‘ werden Strings in Faktoren umgewandelt
    a <- c(„Thomas“, „Linda“, „Felix“, „Sam“)
    b <- c(34,19,18,56)
    myDataFrame <- data.frame(a,b)
    is.factor(a)
    is.factor(myDataFrame$a)

    Ergebnis:
    FALSE
    TRUE

    # Reihenfolge der Faktoren bestimmen
    a <- factor( c(„Thomas“, „Linda“, „Felix“, „Sam“, „Linda“)

    Ergebnis:
    Levels: Felix Linda Sam Thomas

    # Reihenfolge ändern
    a <- factor( a, levels = c(„Linda“, „Sam“, „Thomas“, „Felix“) )

    Ergebnis:
    Levels: Linda Sam Thomas Felix
    # Faktor generieren – 4 gibt an, wie oft ein Faktor vorkommen soll und 2 gibt an, wieviele der Faktor vorkommen sollen – In diesem Beispiel soll „Linda“ und „Sam“ jeweils 4x vorkommen.
    a <- gl(2, 4, labels = c(„Linda“, „Sam“, „Thomas“, „Felix“))

    Ergebnis:
    Linda Linda Linda Linda Sam Sam Sam Sam
    Levels: Linda Sam Thomas Felix
    Vektor

    # Vektor erstellen
    myVector <- c(1,2,c(3,4),5)

    Ergebnis:
    1 2 3 4 5
    # Wenn ein Vektor ein String beinhaltet, werden alle non-string Werte in Strings umgewandelt
    c(‚hello‘,0,TRUE)

    Ergebnis:
    „hello“ „0“ „TRUE“

    # Vektor Index auslesen
    days <- c(„mo“, „di“, „mi“, „do“, „fr“, „sa“, „so“)
    days[c(1,3)]

    Ergebnis:
    „mo“ „mi“

    # Jeden zweiten Wert ausgeben
    days <- c(„mo“, „di“, „mi“, „do“, „fr“, „sa“, „so“)
    days[c(TRUE,FALSE)]

    Ergebnis:
    „mo“ „mi“ „fr“ „so“

    # Einzelne Index entfernen
    days <- c(„mo“, „di“, „mi“, „do“, „fr“, „sa“, „so“)
    days[c(-2,-3)]

    Ergebnis:
    „mo“ „do“ „fr“ „sa“ „so“

    # Index Reihenfolge bestimmen
    days <- c(„mo“, „di“, „mi“, „do“, „fr“, „sa“, „so“)
    days[c(1,7,6,5,4,3,2)]

    Ergebnis:
    „mo“ „so“ „sa“ „fr“ „do“ „mi“ „di“

    # Operatoren auf zwei Vektoren anwenden
    +, -, *, /

    # Ungleiche Länge wird wie folgt gerechnet: 1*1, 2*2, 3*3, 4*1, 5*2, 6*3
    a = c(1, 2, 3)
    b = c(1, 2, 3, 4, 5, 6)
    a*b

    Ergebnis:
    1 4 9 4 10 18

    # Vektor Sortierung (numerisch und Strings)
    a = c(1, 4, 9, 4, 10, 18)
    sort(a)

    # Reihenfolge der Sortierung ändern
    sort(a, decreasing = TRUE)

    # Länge ermitteln
    length (myVector)

    # Sortieren
    sort(myVector)

    # Duplikate erkennen
    duplicated (myVector)

    # Vektor mit ganzen Zahlen zwischen 1 und 50
    1:50

    # Dritte Stelle eines Vektors auslesen
    a[3]

    # Erste bis dritte Stelle des Vektors auslesen
    a[1:3]

    # Vectoren zusammenfügen bzw. Tabelle bauen
    first.name <- c(„Hannes“, „Julia“)
    last.name <- c(„Müller“, „Schmidt“)
    myTable <- data.frame(first.name, last.name)

    oder

    x <- c(„a“, „b“)
    y <- c(„A“, „B“)
    paste(x,y) # Ergebnis: „a A“ „b B“ „a C“

    oder

    rbin (x, y)

    oder

    cbind (x,y)

    Liste

    # Eine Liste erstellen und den name ‚meineListe‘ geben
    meineListe <- list(1, 2, c(3,4))

    Ergebnis:
    [[1]]
    [1] 1

    [[2]]
    [1] 2

    [[3]]
    [1] 3 4

    # Listen bzw. Elemente der Liste betitteln
    names(meineListe) <- c(„Element1“, „Element2“) # die ersten beideb Listen betitteln

    Ergebnis:
    $Element1
    [1] 1

    $Element2
    [1] 2

    $<NA> # Für das dritte Element wurde kein Titel vergeben
    [1] 3 4

    # Die Namen der Listen explizit ausgeben
    names(meineListe)

    # Zugriff auf die Listenelemente
    meineListe[1]
    oder
    meineListe$Element1

    # Liste komplett überschreiben
    meineListe <- list(c(10, 20, 30), „Hello Liste“)

    # Listenelement überschreiben
    meineListe[2] <- „Hello World!“

    # Listen miteinander verknüpfen
    a = list(1,2,3)
    b = list(4,5,6)
    meineNeueListe = c(a,b)

    # Liste in ein Vektor umwandeln
    unlist(meineNeueListe)

    Ergebnis:
    [1] 1 2 3 4 5 6

    Matrix

    # Matrix erstellen (immer zweidimensional)

    matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = FALSE)

    Ergebnis:
    [,1] [,2] [,3]
    [1,] 1 3 5
    [2,] 2 4 6

    oder

    matrix( c(1,2,3,4,5,6), ncol = 3, nrow = 2, byrow = TRUE)
    Ergebnis:
    [,1] [,2] [,3]
    [1,] 1 2 3
    [2,] 4 5 6

    # Metrix mit vorgegbenem Zeilen- und Spaltenbezeichnung
    rownames = c(„row1“, „row2“, „row3“)
    colnames = c(„col1“, „col2“, „col3“, „col4“)
    myMatrix <- matrix(c(1:12), ncol = 4, nrow = 3, byrow = TRUE, dimnames = list(rownames, colnames))

    Ergebnis:
    col1 col2 col3 col4
    row1 1 2 3 4
    row2 5 6 7 8
    row3 9 10 11 12

    # Die gesamte erste Zeile auslesen
    myMatrix[1,]

    Ergebnis:
    col1 col2 col3 col4
    1 2 3 4

    # Die gesamte erste Spalte auslesen
    myMatrix[,1]

    Ergebnis:
    row1 row2 row3
    1 5 9

    # Werte aus der ersten Zeile und der dritten Spalte auslesen.
    myMatrix[1,3]

    # Matrix Addition (Weitere mathematische Operationen funktionieren auf die gleiche Weise)
    myMatrix1
    [,1] [,2] [,3]
    [1,] 1 2 3
    [2,] 4 5 6

    myMatrix2
    [,1] [,2] [,3]
    [1,] 1 2 3
    [2,] 4 5 6

    myMatrix1 + myMatrix2

    Ergebnis:
    [,1] [,2] [,3]
    [1,] 2 4 6
    [2,] 8 10 12

    Array

    # Array (n- bzw. mehrdimensinal)
    array(„a“, dim = c(3,4,2) )

    Ergebnis:
    , , 1

    [,1] [,2] [,3] [,4]
    [1,] „a“ „a“ „a“ „a“
    [2,] „a“ „a“ „a“ „a“
    [3,] „a“ „a“ „a“ „a“

    , , 2

    [,1] [,2] [,3] [,4]
    [1,] „a“ „a“ „a“ „a“
    [2,] „a“ „a“ „a“ „a“
    [3,] „a“ „a“ „a“ „a“

    # Multidimensionaler Vektor
    a <- array(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), dim=c(3, 4))

    oder

    a <- c(1,2,3,4)
    b <- c(5,6,7,8,9,10,11,12)
    rownames = c(„row1“, „row2“, „row3“)
    colnames = c(„col1“, „col2“, „col3“, „col4“)
    myArray <- array( c(a,b), dim = c(3,4,2), dimnames = list(rownames, colnames) )

    Ergebnis:
    , , 1

    col1 col2 col3 col4
    row1 1 4 7 10
    row2 2 5 8 11
    row3 3 6 9 12

    , , 2

    col1 col2 col3 col4
    row1 1 4 7 10
    row2 2 5 8 11
    row3 3 6 9 12

    # Ausgabe: Zeile 1, Spalte 3 und Dimension 2
    myArray[1,3,2]

    Ergebnis:
    7

    # Ausgabe der gesamten zweiten Dimension:
    myArray[,,2]

    # Array der zweiten Dimension überschreiben
    a <- c(13,14,15,16)
    b <- c(17,18,19,20,21,22,23,24)
    rownames = c(„row1“, „row2“, „row3“)
    colnames = c(„col1“, „col2“, „col3“, „col4“)
    myArray[,,2] <- array( c(a,b), dim = c(3,4), dimnames = list(rownames, colnames) )

    # Matrix Berechnung vornehmen bzw. eine Funktion anwenden z.B. die Summe der Zeilen aller Dimensionen bilden d.h. die Summe der ersten Zeile der ersten Dimension + die Summe der ersten Zeile der zweiten Dimension usw.
    apply(myArray, c(1), sum) # Zeile = 1; Spalte = 2; Zeile & Spalte = c(1,2)

    Ergebnis:
    row1 row2 row3
    92 100 108

    Data Frame

    # Data Frame – Die Werte einer Spalte müssen vom gleichen Type und Länge sein
    myDataFrame <- data.frame (
    name = c(„Thomas“, „Johan“, „Linda“),
    alter = c(34, 21, 49),
    geschlecht = c(„M“, „M“, „W“),
    stringsAsFactors = FALSE
    )

    Ergebnis:
    name alter geschlecht
    1 Thomas 34 M
    2 Johan 21 M
    3 Linda 49 W

    # Die Struktur der data.frame anzeigen lassen
    str(myDataFrame)

    Ergebnis:
    ‚data.frame‘: 3 obs. of 3 variables:
    $ name : Factor w/ 3 levels „Johan“,“Linda“,..: 3 1 2
    $ alter : num 34 21 49
    $ geschlecht: Factor w/ 2 levels „M“,“W“: 1 1 2

    # Spalten Werte auswerten
    summary(myDataFrame)

    Ergebnis:
    name alter geschlecht
    Length:3 Min. :21.00 Length:3
    Class :character 1st Qu.:27.50 Class :character
    Mode :character Median :34.00 Mode :character
    Mean :34.67
    3rd Qu.:41.50
    Max. :49.00

    # Spalte auslesen
    data.frame(myDataFrame$name)

    Ergebnis:
    myDataFrame.name
    1 Thomas
    2 Johan
    3 Linda

    # Die ersten beiden Spalten anzeigen lassen – index fängt bei 0 an
    myDataFrame[0:1,]

    Ergebnis:
    name alter geschlecht
    1 Thomas 34 M

    # Spalte 1 & 3 auslesen – index fängt bei 1 an
    myDataFrame[c(1,3)]

    Ergebnis:
    name geschlecht
    1 Thomas M
    2 Johan M
    3 Linda W

    # Neue Spalte hinzufügen
    myDataFrame$SpaltenBezeichnung <- c(„Wert1″,“Wert2″,“Wert3“)

    Ergebnis:
    name alter geschlecht SpaltenBezeichnung
    1 Thomas 34 M Wert1
    2 Johan 21 M Wert2
    3 Linda 49 W Wert3

    # Neue Zeile hinzufügen
    newDataFrameRows <- data.frame (
    name = c(„Igor“, „Andreas“, „Sascha“),
    alter = c(19, 25, 34),
    geschlecht = c(„M“, „M“, „W“),
    SpaltenBezeichnung = c(„new1″,“new2″,“new3“),
    stringsAsFactors = FALSE
    )

    rbind(myDataFrame,newDataFrameRows)

    Ergebnis:
    name alter geschlecht SpaltenBezeichnung
    1 Thomas 34 M Wert1
    2 Johan 21 M Wert2
    3 Linda 49 W Wert3
    4 Igor 19 M new1
    5 Andreas 25 M new2
    6 Sascha 34 W new3

    Tabelle

    # GUI aufrufen, um die zuvor erstelle Tabelle zu bearbeiten
    myTable <- edit (myTable)
    oder
    fix (myTable) # Hier wird der veränderte Wert zum ursprünglichen Symbol (myTable) hinzugefügt

    # Anzahl Zeilen und Spalten einer Tabelle anzeigen
    dim(tableName)

    # Die Namen der Spalten auflisten
    colnames(tablName)

    # Tabelle auf gewünschte Spalten reduzieren
    Eingabe:
    train[,c(‚age‘,’name‘)]

    Bedingung (if/else)

    # if / else
    x <- 1
    if (1 > 2) „yes“ else „no“

    # Ausdrücke mit Semikolon (;)hintereinander schreiben
    „hello“; 1+1; 1*3

    Loop

    i = 5
    repeat {if (i > 25) break else {print(i); i <- i + 5;}}
    oder
    while (i <= 25) {print(i); i <- i + 5}
    oder
    for (i in seq(from=0, to=100, by=5)) print(i)

    oder

    seq(0, 100, by = 5)

    Ergebnis:
    0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100
    Datenbank Verbindungsaufbau und Query Abfrage

    Funktionen

    # Unterschiedliche Schreibweisen und Funktionsparameter
    log2(64)
    log(x=64,base=2)
    log(64,2)

    # funktion mit Funktion-Argumenten erstellen
    x <- function(i) i^2
    x(2) # Ergebnis: 4

    # Eigene Funktion schreiben
    nameDerFunktion <- function(Übergabeparameter) {
    print(Übergabeparameter)
    }

    # Funktionsaufruf
    nameDerFunktion(Übergabeparameter)

    # Funktion mit mehreren Parameter
    sayHelloWorld <- function(s,h) {
    cat(s, „“, h)
    }
    sayHelloWorld(s=“Hello“, h=“World“)
    oder
    sayHelloWorld(„Hello“, „World“)

    # Funktion mit vorgegebenen Werten
    sayHelloWorld <- function(s=“H“,h=“W“) {
    cat(s, „“, h)
    }
    sayHelloWorld() # Für die Ausgabe der vorgegebenen Werten
    sayHelloWorld(„Hello“, „World“) # Um die vorgegebenen Werte zu überschreiben

    Mathematische Funktionen

    # Anzahl der Nachkommastellen festlegen. Maximal sind 17 Stellige Zahlen z.B. eine Zahl und 16 Nachkommastellen erlaubt. Default = 6 Nachkommastellen bzw. 7 Stellige Zahlen
    options(digits=17)
    # Runden z.B. Wurzel 99
    round( sqrt(99) )
    oder
    round(x=sqrt(99), digits=2) # Angabe der Nachkommastellen
    oder
    round(sqrt(99), 2)

    # Durchschnittswert Berechnen
    x = c(1,2,3) # (1+2+3)/3
    mean(x) # 2

    # Median bzw. Zentralwert Berechnung
    x = c(1, 2, 4, 99)
    median(x) # 3

    # Minimalwert und Maximalwert
    min(x)
    max x)
    oder
    range(x) # 1 99

    # Maximaler Wert minus minimaler Wert
    diff( range(x) )
    # Zufällige Daten erzeugen
    sample(1:1000, 10, replace = FALSE, prob = NULL)

    # 10x die Zahl 0 erzeugen
    a <- rep(0, 10)

    # Formatierung der Ausgabe
    format(20.0, nsmall = 10) # die Nachkommastelle um 10 Stellen auffüllen

    Ergebnis:
    „20.0000000000“

    # Reduzierung der Nachkommastellen
    format(20.123456789, digits = 4)

    Ergebnis:
    20.12

    # Wissenschaftliche Schreibweise
    format(20.0000000000, scientific = TRUE)

    Ergebnis:
    2e+01 #
    # Eingab in String formatieren
    format(100)

    Ergebnis:
    „100“