R-Daten einlesen.
Es gibt verschiedene Möglichkeiten: am einfachsten ist es mit read.table() tab = read.table("H:/daten.txt")
R-Session speichern
Verzeichnis auswählen, wo die R-Daten gespeichert werden sollen setwd ("H:")
q() und dann 'ja' Save workspace image.
Die Datei .Rdata enthält die R-Objekte im Verzeichnis xxxx Um die Daten im nächsten Session einzulesen, R starten, dann:
attach("H:/.Rdata")
Um das gespeicherte Verzeichnis zu sehen:
search() ls(pos=2) Packages
Viele Funktionen werden in packages gespeichert.
library()
Einige werden geladen, wenn R gestartet wird. Um zu sehen, welche:
search()
Um zusätzliche Packages zu laden:
library("emu")
Um zu sehen, welchen Funktionen in einem Package enthalten sind:
ls(package:emu) Help-pages
help(pnorm)
example(density)
help.search("norm")
help.start()
Vektoren
x <- c(3, 4, 6, 89.3, 0, -10)
labs <- c("E", "A", "E", "i:", "A")
Logische Vektoren help("==")
lvec <- c(T, T, F, F, T) class(lvec)
T & F # True AND False is False
[1] FALSE
T | F # True OR False is True
[1] TRUE
F & F # False AND False is False
[1] FALSE
any(c(F, F, F))
[1] FALSE
any(c(T, F, T))
[1] TRUE
any(!c(T, T, T))
[1] FALSE
x = c(10, 20, 30) x == 20
[1] FALSE TRUE FALSE Vektoren: Indizierung
x[2] # element 2 of x
[1] 4
x[2:4] # elements 2 through 4
[1] 4.0 6.0 89.3
x[c(1,4)] # elements 1 and 4
[1] 3.0 89.3
x[-2] # all elements except element 2
[1] 3.0 6.0 89.3 0.0 -10.0
x[2:4] = 0 # set elements 2 through 4 to zero mit logischen Vektoren
x[x >=30] # Elemente von x größer als 30 labs <- c("E", "A", "E", "i:", "A")
# alle "E" Elemente temp = labs=="E"
labs[temp]
# oder
labs[labs=="E"]
Matrizen
help(matrix)
a = c(10, 3, 8, 7)
b = c(11, 45, 20, -1)
x = rbind(a, b) # a matrix of 2 rows and 4 columns x
[,1] [,2] [,3] [,4]
a 10 3 8 7 b 11 45 20 -1
y = cbind(a, b) # a matrix of 4 rows and 2 columns y
a b [1,] 10 11 [2,] 3 45 [3,] 8 20 [4,] 7 -1
t(y) # y transponieren
dim(y) # Reihen und Spaltenanzahl
nrow(y) ncol(y)
dimnames(y) # Dimensionen-Namen
# Dimensionen-Namen setzen
dimnames(y) = list(c("a", "b", "c", "d"), c("F1", "F2")) Matrizen: Indizierung
duration = c(33, 56, 37, 50, 49, 21) form1 = c(979, 592, 224, 597, 281, 737)
form2 = c(1680, 1940, 2451, 2050, 2624, 1544) data = cbind(duration, form1, form2)
data[2,] # Reihe 2
data[,3] # Spalte 3
data[2,3] # Reihe 2 von Spalte 3
mit logischen Vektoren
labs = c("a", "e", "i", "e", "i", "a")
data[labs=="a",] # alle "a" Reihen
# Spalten 1 und 3 für "i" and "a"
data[labs %in% c("i", "a"),c(1,3)]
# Spalte 3 aller Vokale außer "e"
data[labs!="e",3]
Arithmetische Operatoren help("Arithmetic") Vektoren
a = c(10, 4, 20)
a * 10 # all elements of a are multiplied by 10
[1] 100 40 200
b = c(5, 2, 7) a + b
[1] 15 6 27
# element n of a is added to element n of b
Matrizen
a = c(10, 3, 8, 7) b = c(11, 45, 20, -1)
x = rbind(a, b) # a matrix of 2 rows and 4 columns x-20
[,1] [,2] [,3] [,4]
a -10 -17 -12 -13 b -9 25 0 -21
> x
[,1] [,2] [,3] [,4]
10 3 8 7 11 45 20 -1
> y = x*2
> y
[,1] [,2] [,3] [,4]
20 6 16 14 22 90 40 -2
> x + y
[,1] [,2] [,3] [,4]
30 9 24 21 33 135 60 -3
Data-frames
Wie eine Matrix, aber die Spalten können gemischt sein: d.h. einige sind numerische Vektoren, einige sind Schriftzeichen-Vektoren.
Wird oft in statistischen Tests verwendet, wo wir mit prüfen wollen, ob gewisse numerische Daten für gewisse Faktoren (Schriftzeichen) signifikant sind.
# data-frame einlesen
read.table("H:/daten.txt")
# data-frame in R erzeugen
# zB für die vorigen Daten:
duration = c(33, 56, 37, 50, 49, 21) form1 = c(979, 592, 224, 597, 281, 737)
form2 = c(1680, 1940, 2451, 2050, 2624, 1544) labs = c("a", "e", "i", "e", "i", "a")
d.df = data.frame(F1=form1, F2=form2, dauer=duration, vokale=factor(labs))
d.df
F1 F2 dauer vokale 1 979 1680 33 a 2 592 1940 56 e 3 224 2451 37 i 4 597 2050 50 e 5 281 2624 49 i 6 737 1544 21 a
rownames(d.df) # Reihennamen
colnames(d.df) # Spaltennamen
45 + 90
=
135
Data-Frames Indizierung
Wie bei Matrizen
Oder mit
attach()attach(vowlax.df) vowlax.df[1:3,]
F1 F2 F3 f0 rms dur phonetic word speaker 1 562 1768 2379 148.995 81.5328 89.813 E Geld 67 2 648 1463 2523 0.000 70.9245 43.810 a allein 67 3 684 1274 2505 126.482 75.3793 53.130 a macht 67
# F1 von 'geld'
F1[word=="Geld"]
[1] 562 454
# Date-Frames editieren
new.df = edit(d.df)