Overview of structure of object classes
## [1] "integer"
## [1] 1 2 3 4 5 6 7 8 9
## [1] "numeric"
## [1] 1.3 2.4 3.5
## [1] "logical"
## [1] FALSE FALSE FALSE TRUE TRUE TRUE TRUE
## [1] "character"
## [1] "a" "b" "c" "d" "f"
## [1] "matrix"
## [1] "array"
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 6 11 16 21
## [2,] 2 7 12 17 22
## [3,] 3 8 13 18 23
## [4,] 4 9 14 19 24
## [5,] 5 10 15 20 25
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 26 31 36 41 46
## [2,] 27 32 37 42 47
## [3,] 28 33 38 43 48
## [4,] 29 34 39 44 49
## [5,] 30 35 40 45 50
## [1] "list"
## $a
## [1] 4 5 6 7 8
##
## $b
## [1] 1 2 3
##
## $c
## [1] "Ger" "FR" "It" "SE"
## [1] "data.frame"
|
|
Fertility
|
Agriculture
|
Examination
|
|
Courtelary
|
80.2
|
17.0
|
15
|
|
Delemont
|
83.1
|
45.1
|
6
|
|
Franches-Mnt
|
92.5
|
39.7
|
5
|
|
Moutier
|
85.8
|
36.5
|
12
|
|
Neuveville
|
76.9
|
43.5
|
17
|
|
Porrentruy
|
76.1
|
35.3
|
9
|
|
Broye
|
83.8
|
70.2
|
16
|
|
Glane
|
92.4
|
67.8
|
14
|
|
Gruyere
|
82.4
|
53.3
|
12
|
|
Sarine
|
82.9
|
45.2
|
16
|
## [1] "factor"
## [1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
## Levels: 1 2 3 4 5
## [1] "ordered" "factor"
## [1] A B C A B C A B C A B C A B C A B C A B C A B C A B C A B C
## Levels: A < B < C
## [1] "function"
## function(){x^2}
## [1] "function"
## function (x, ...)
## UseMethod("mean")
## <bytecode: 0x00000000189a47f0>
## <environment: namespace:base>
Vectors: Numerical, logical and character
- Classes:
"integer", "numeric", "logical", "character"
- Numerical vectors: Sequence of numbers
- Logical vectors
- …take on the values
TRUE and FALSE
- …are often the results of comparisons
- e.g.
c(1,2,3) >= 2 results in FALSE TRUE TRUE
- …are often used as input for various operations
- Character vectors
- …are sequences of letters and/or words
- e.g.
c("Markus", "Matthias", "David", "Till") gives the vector "Markus" "Matthias" "David" "Till"
names(object) <- charaktervektor: Name more complex dataclasses, e.g. a dataframe
- Some functions/operations for vectors
c(): “concatenate”, e.g. c(1.2,"Hans",5.0,6.7)
length(): Get vector length
:: indicates from/to for numbers
rep("Peter",2): Repeat 5 two times
seq(5,8): Sequence from 5 to 8
vector[positions]
- Access elements by inserting a numeric or logical vector for positions
- Display
- e.g.
[1] 1.20 3.50 5.00 6.70 8.00 10.00 13.55
[1] = Position of the first element displayed in that line in the vector (show it!)
- Special values
Inf and -Inf: Positive and negative infinity
NaN: “Not a number”, e.g. calculate 0/0
NA: Missing value
- Combine vectors
rbind(): Combine vectors line-by-line
cbind(): Combine vectors column-by-column
Example: Vectors
# Generate two vectors
x <- 10:19
x
## [1] 10 11 12 13 14 15 16 17 18 19
y <- c(TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, FALSE)
y
## [1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE
# seq(0,18,2)
z <- c("a", "b", "c", "d", "e", "f", "g", "h", "i", "j")
z
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
# Access vector elements
x[1] # 1st element of x
## [1] 10
x[1:5] # First 5 elements of x
## [1] 10 11 12 13 14
x[-(2:6)] # All elements but not positions 2 to 6
## [1] 10 16 17 18 19
## [1] "d"
## [1] 10 12 14 16 18
## [1] 10 11 12 13 14 15 16 17 18 19
# Add names to elements of a vector
names(x)
## NULL
names(x) <- z
# or like this
another.vector <- c(a=1,b=2)
x
## a b c d e f g h i j
## 10 11 12 13 14 15 16 17 18 19
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
# Combine vectors rowwise and columnwise
rbind(x,y)
|
|
a
|
b
|
c
|
d
|
e
|
f
|
g
|
h
|
i
|
j
|
|
x
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
|
y
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
|
y
|
z
|
|
TRUE
|
a
|
|
FALSE
|
b
|
|
TRUE
|
c
|
|
FALSE
|
d
|
|
TRUE
|
e
|
|
FALSE
|
f
|
|
TRUE
|
g
|
|
FALSE
|
h
|
|
TRUE
|
i
|
|
FALSE
|
j
|
# Q: What did R do to the vectors? What class do they have?
# Access with names
names(x)
## [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"
## a c
## 10 12
Exercise: Vectors
- Use your usual r-script to save the code for the following exercises.
- Create a vector of length 50 that contains the numbers from 1 to 5 repeated for 10 times.
- Create a vector
x of length 404 in which the numbers 199 to 400 are repeated two times. Generate a new vector y, that contains the elements of x on the positions 53, 78 and 99.
- Create a character vector
Freunde that contains the names of your three best friends.
Exercise: Vectors - Combining and subsetting (HOMEWORK)
- Create a vector
x of length 101, that starts with the number 33 and ends with the number 133.
- Extract the elements on the positions 26 to 50 and save them in a new object
y. Extract the elements on position 1 to 25 and save them in a new vector z. Join the two vectors both column by column and subsequently line by line (rows!) and save the results in two new objects colyz and colyz. What class do the last two objects that you created posses?
- Extract the elements (from
x) that are smaller than 57 or greater/equal than 83 and save them in a new object subgroup.
Solution: Vectors - Combining and subsetting
Factors and lists
- Factors
- Class:
"factor"
factor(): Create an unordered factor
ordered(): Create an ordered factor
- A way to store data for categorical (nominal/ordinal) variables
- Vector with attributes
levels(): Display categories
as.numeric(): Convert factor to numeric vector
- Lists
- Class:
"list"
list(): Create a list
- Collections of arbitrary objects
- Have a certain length and list elements can carry names
list$switzerland: Access element switzerland of the list list
list[2]: Access second element of the list list
- Sometimes results of estimations are stored as lists
- We’ll see more object classes later on
Example: Factors and lists
# Q: How do i get help for the function factor()?
# Create factor (nominal variable)
f <- factor(rep(1:2,10),levels=c(1,2), labels=c("SPD", "CDU"))
# Q: How do I go about to understand what happens in the function?
f
## [1] SPD CDU SPD CDU SPD CDU SPD CDU SPD CDU SPD CDU SPD CDU SPD CDU SPD
## [18] CDU SPD CDU
## Levels: SPD CDU
## [1] "SPD" "CDU"
## [1] 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
# Create factor (ordinal variable)
o <- ordered(rep(1:3,10),levels=c(1,2,3), labels=c("low", "medium", "high"))
o
## [1] low medium high low medium high low medium high low
## [11] medium high low medium high low medium high low medium
## [21] high low medium high low medium high low medium high
## Levels: low < medium < high
## [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
## [1] "low" "medium" "high" "low" "medium" "high" "low"
## [8] "medium" "high" "low" "medium" "high" "low" "medium"
## [15] "high" "low" "medium" "high" "low" "medium" "high"
## [22] "low" "medium" "high" "low" "medium" "high" "low"
## [29] "medium" "high"
# Create a list
participants <- list(Teacher= "Rudi",
Women = c("Daniela","Johanna"),
Men = c("Simon", "Peter", "usw."))
participants
## $Teacher
## [1] "Rudi"
##
## $Women
## [1] "Daniela" "Johanna"
##
## $Men
## [1] "Simon" "Peter" "usw."
## [1] 3
# Access elements or subsets of that list
participants$Teacher
## [1] "Rudi"
## $Teacher
## [1] "Rudi"
## [1] "Rudi"
participants[["Teacher"]]
## [1] "Rudi"
# Q: How can I access the list element "Women"?
# Q: How can i access the Johanna who is in the element "Women"?
Exercise: Factors and lists (HOMEWORK)
- Create a list
mylist with two elements. The first element first contains the numbers 5 to 105. The second element second contains the numbers -1 to -50. Create another vector x that contains the 70th value of the first element of mylist and the 30th element of the second element of mylist.
- Create a list
anotherlist with four elements: A, B, C, D. A contains the number 2. B contains a vector with the number 1 to 10. C contains a character vector with the names “Bernd” “Hans” “Peter”. D contains a vector with the numbers 1 to 100.
- Extract the third Element C from the list you just generated and save it in a new object
names.
- Extract the vector elements 25 to 35 out of the fourth element
D of the list and save them in an object names xyz.
- Create vector using the following code:
test <- rep(1:10,10). Convert test to an ordered factor. Check which categories the factor has and whether it’s ordered.
Solution: Objects: Factors and lists