Vectors

# create vectors of data for three medical patients
subject_name <- c("John Doe", "Jane Doe", "Steve Graves")
temperature <- c(98.1, 98.6, 101.4)
flu_status <- c(FALSE, FALSE, TRUE)
# access the second element in body temperature vector
temperature[2]
[1] 98.6

Examples of accessing items in vector

# include items in the range 2 to 3
temperature[2:3]
[1]  98.6 101.4
# exclude item 2 using the minus sign
temperature[-2]
[1]  98.1 101.4
# use a vector to indicate whether to include item
temperature[c(TRUE, TRUE, FALSE)]
[1] 98.1 98.6

Factors

gender <- factor(c("MALE","FEMALE","MALE"))
gender
[1] MALE   FEMALE MALE  
Levels: FEMALE MALE
blood <- factor(c("O", "AB","A"),
          levels = c("A", "B","AB", "O"))
blood
[1] O  AB A 
Levels: A B AB O
# add ordered factor
symptoms <- factor(c("SEVERE", "MILD", "MODERATE"),
                   levels = c("MILD", "MODERATE", "SEVERE"),
                   ordered = TRUE)
symptoms
[1] SEVERE   MILD     MODERATE
Levels: MILD < MODERATE < SEVERE
# ISsymptoms greater than moderate
symptoms > "MODERATE"
[1]  TRUE FALSE FALSE

Lists

# display information for a patient
subject_name[1]
[1] "John Doe"
temperature[1]
[1] 98.1
flu_status[1]
[1] FALSE
gender[1]
[1] MALE
Levels: FEMALE MALE
blood[1]
[1] O
Levels: A B AB O
symptoms[1]
[1] SEVERE
Levels: MILD < MODERATE < SEVERE
# List for patient
subject1 <- list(fullname = subject_name[1],
                 temperature = temperature[1],
                 flu_status = flu_status[1],
                 gender = gender[1],
                 blood = blood[1],
                 symptoms = symptoms[1])
# Display subject 1
subject1
$fullname
[1] "John Doe"

$temperature
[1] 98.1

$flu_status
[1] FALSE

$gender
[1] MALE
Levels: FEMALE MALE

$blood
[1] O
Levels: A B AB O

$symptoms
[1] SEVERE
Levels: MILD < MODERATE < SEVERE
# List for patient 2
subject2 <- list(fullname = subject_name[2],
                 temperature = temperature[2],
                 flu_status = flu_status[2],
                 gender = gender[2],
                 blood = blood[2],
                 symptoms = symptoms[2])
# Display subject 2
subject2
$fullname
[1] "Jane Doe"

$temperature
[1] 98.6

$flu_status
[1] FALSE

$gender
[1] FEMALE
Levels: FEMALE MALE

$blood
[1] AB
Levels: A B AB O

$symptoms
[1] MILD
Levels: MILD < MODERATE < SEVERE

Methods for accessing a list

# get a single list value by position (returns a sub-list)
subject1[2]
$temperature
[1] 98.1
# get a single list value by position (returns a numeric vector)
subject1[[2]]
[1] 98.1
# get a single list value by name
subject1$temperature
[1] 98.1
# get several list items by specifying a vector of names
subject1[c("temperature", "flu_status", "blood", "gender", "fullname")]
$temperature
[1] 98.1

$flu_status
[1] FALSE

$blood
[1] O
Levels: A B AB O

$gender
[1] MALE
Levels: FEMALE MALE

$fullname
[1] "John Doe"

Access a list like a vector

subject1[2:3]
$temperature
[1] 98.1

$flu_status
[1] FALSE
subject2[2:3]
$temperature
[1] 98.6

$flu_status
[1] FALSE

Data frames —–

Create a data frame from medical patient data

pt_data <- data.frame(subject_name, temperature, flu_status, gender,
                      blood, symptoms, stringAsFactors = FALSE)
# Display Dataframe
pt_data

Accessing a data frame

# get a single column
pt_data$subject_name
[1] "John Doe"     "Jane Doe"     "Steve Graves"
# Get several columns by specifying a vector of names
pt_data[c("temperature", "flu_status")]
pt_data[2:3]
# Access by row and column
pt_data[1,2]
[1] 98.1
# Accessing several rows and several columns using vectors
pt_data[c(1,3), c(2,4)]

Leave a row or column blank to extract all rows or columns

# columns 1, all rows
pt_data[ , 1]
[1] "John Doe"     "Jane Doe"     "Steve Graves"
# row 1, all columns
pt_data[1, ]
# All rows, all columns
pt_data[ , ]
# the following are equivalent
pt_data[c(1, 3), c("temperature", "gender")]
pt_data[-2, c(-1, -3, -5, -6)]
NA

Matrixes —–

# create a 2x2 matrix
m <- matrix(c(1, 2, 3, 4), nrow = 2)
m
     [,1] [,2]
[1,]    1    3
[2,]    2    4
# equivalent to the above
m <- matrix(c(1, 2, 3, 4), ncol = 2)
m
     [,1] [,2]
[1,]    1    3
[2,]    2    4
# create a 2x3 matrix
m <- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2)
m
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
# create 3x2 matrix
m <- matrix(c(1,2,3,4,5,6), ncol =2)
m
     [,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
# extract values from matrixes
m[1, 1]
[1] 1
m[3, 2]
[1] 6
# xtract all first rows
m[1 , ]
[1] 1 4
# extract columns
m[, 1]
[1] 1 2 3
LS0tCnRpdGxlOiAiUiBEYXRhIFN0cnVjdXJlcyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKPGJyPiA8L2JyPgoKIyMgKipWZWN0b3JzICoqCgpgYGB7cn0KIyBjcmVhdGUgdmVjdG9ycyBvZiBkYXRhIGZvciB0aHJlZSBtZWRpY2FsIHBhdGllbnRzCnN1YmplY3RfbmFtZSA8LSBjKCJKb2huIERvZSIsICJKYW5lIERvZSIsICJTdGV2ZSBHcmF2ZXMiKQp0ZW1wZXJhdHVyZSA8LSBjKDk4LjEsIDk4LjYsIDEwMS40KQpmbHVfc3RhdHVzIDwtIGMoRkFMU0UsIEZBTFNFLCBUUlVFKQpgYGAKCgpgYGB7cn0KIyBhY2Nlc3MgdGhlIHNlY29uZCBlbGVtZW50IGluIGJvZHkgdGVtcGVyYXR1cmUgdmVjdG9yCnRlbXBlcmF0dXJlWzJdCmBgYAoKIyMgKipFeGFtcGxlcyBvZiBhY2Nlc3NpbmcgaXRlbXMgaW4gdmVjdG9yKioKYGBge3J9CiMgaW5jbHVkZSBpdGVtcyBpbiB0aGUgcmFuZ2UgMiB0byAzCnRlbXBlcmF0dXJlWzI6M10KYGBgCgpgYGB7cn0KIyBleGNsdWRlIGl0ZW0gMiB1c2luZyB0aGUgbWludXMgc2lnbgp0ZW1wZXJhdHVyZVstMl0KYGBgCgpgYGB7cn0KIyB1c2UgYSB2ZWN0b3IgdG8gaW5kaWNhdGUgd2hldGhlciB0byBpbmNsdWRlIGl0ZW0KdGVtcGVyYXR1cmVbYyhUUlVFLCBUUlVFLCBGQUxTRSldCmBgYAoKIyMgKipGYWN0b3JzKioKCmBgYHtyfQpnZW5kZXIgPC0gZmFjdG9yKGMoIk1BTEUiLCJGRU1BTEUiLCJNQUxFIikpCmdlbmRlcgpgYGAKYGBge3J9CmJsb29kIDwtIGZhY3RvcihjKCJPIiwgIkFCIiwiQSIpLAogICAgICAgICAgbGV2ZWxzID0gYygiQSIsICJCIiwiQUIiLCAiTyIpKQpibG9vZApgYGAKCmBgYHtyfQojICBvcmRlcmVkIGZhY3RvcgpzeW1wdG9tcyA8LSBmYWN0b3IoYygiU0VWRVJFIiwgIk1JTEQiLCAiTU9ERVJBVEUiKSwKICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIk1JTEQiLCAiTU9ERVJBVEUiLCAiU0VWRVJFIiksCiAgICAgICAgICAgICAgICAgICBvcmRlcmVkID0gVFJVRSkKYGBgCgpgYGB7cn0Kc3ltcHRvbXMKYGBgCgoKYGBge3J9CiMgSVNzeW1wdG9tcyBncmVhdGVyIHRoYW4gbW9kZXJhdGUKc3ltcHRvbXMgPiAiTU9ERVJBVEUiCmBgYAoKCiMjICoqTGlzdHMqKgpgYGB7cn0KIyBkaXNwbGF5IGluZm9ybWF0aW9uIGZvciBhIHBhdGllbnQKc3ViamVjdF9uYW1lWzFdCmBgYAoKYGBge3J9CnRlbXBlcmF0dXJlWzFdCmBgYApgYGB7cn0KZmx1X3N0YXR1c1sxXQpgYGAKYGBge3J9CmdlbmRlclsxXQpgYGAKCmBgYHtyfQpibG9vZFsxXQpgYGAKCmBgYHtyfQpzeW1wdG9tc1sxXQpgYGAKCmBgYHtyfQojIExpc3QgZm9yIHBhdGllbnQgMQpzdWJqZWN0MSA8LSBsaXN0KGZ1bGxuYW1lID0gc3ViamVjdF9uYW1lWzFdLAogICAgICAgICAgICAgICAgIHRlbXBlcmF0dXJlID0gdGVtcGVyYXR1cmVbMV0sCiAgICAgICAgICAgICAgICAgZmx1X3N0YXR1cyA9IGZsdV9zdGF0dXNbMV0sCiAgICAgICAgICAgICAgICAgZ2VuZGVyID0gZ2VuZGVyWzFdLAogICAgICAgICAgICAgICAgIGJsb29kID0gYmxvb2RbMV0sCiAgICAgICAgICAgICAgICAgc3ltcHRvbXMgPSBzeW1wdG9tc1sxXSkKYGBgCgoKYGBge3J9CiMgRGlzcGxheSBzdWJqZWN0IDEKc3ViamVjdDEKYGBgCmBgYHtyfQojIExpc3QgZm9yIHBhdGllbnQgMgpzdWJqZWN0MiA8LSBsaXN0KGZ1bGxuYW1lID0gc3ViamVjdF9uYW1lWzJdLAogICAgICAgICAgICAgICAgIHRlbXBlcmF0dXJlID0gdGVtcGVyYXR1cmVbMl0sCiAgICAgICAgICAgICAgICAgZmx1X3N0YXR1cyA9IGZsdV9zdGF0dXNbMl0sCiAgICAgICAgICAgICAgICAgZ2VuZGVyID0gZ2VuZGVyWzJdLAogICAgICAgICAgICAgICAgIGJsb29kID0gYmxvb2RbMl0sCiAgICAgICAgICAgICAgICAgc3ltcHRvbXMgPSBzeW1wdG9tc1syXSkKYGBgCgoKYGBge3J9CiMgRGlzcGxheSBzdWJqZWN0IDIKc3ViamVjdDIKYGBgCgojIyAqKk1ldGhvZHMgZm9yIGFjY2Vzc2luZyBhIGxpc3QqKgoKYGBge3J9CiMgZ2V0IGEgc2luZ2xlIGxpc3QgdmFsdWUgYnkgcG9zaXRpb24gKHJldHVybnMgYSBzdWItbGlzdCkKc3ViamVjdDFbMl0KYGBgCgpgYGB7cn0KIyBnZXQgYSBzaW5nbGUgbGlzdCB2YWx1ZSBieSBwb3NpdGlvbiAocmV0dXJucyBhIG51bWVyaWMgdmVjdG9yKQpzdWJqZWN0MVtbMl1dCmBgYAoKYGBge3J9CiMgZ2V0IGEgc2luZ2xlIGxpc3QgdmFsdWUgYnkgbmFtZQpzdWJqZWN0MSR0ZW1wZXJhdHVyZQpgYGAKYGBge3J9CiMgZ2V0IHNldmVyYWwgbGlzdCBpdGVtcyBieSBzcGVjaWZ5aW5nIGEgdmVjdG9yIG9mIG5hbWVzCnN1YmplY3QxW2MoInRlbXBlcmF0dXJlIiwgImZsdV9zdGF0dXMiLCAiYmxvb2QiLCAiZ2VuZGVyIiwgImZ1bGxuYW1lIildCmBgYAoKIyMgKipBY2Nlc3MgYSBsaXN0IGxpa2UgYSB2ZWN0b3IqKgpgYGB7cn0Kc3ViamVjdDFbMjozXQpzdWJqZWN0MlsyOjNdCmBgYAoKIyMgKipEYXRhIGZyYW1lcyDigJTigJMqKgoKIyMjIyAqKkNyZWF0ZSBhIGRhdGEgZnJhbWUgZnJvbSBtZWRpY2FsIHBhdGllbnQgZGF0YSoqCmBgYHtyfQpwdF9kYXRhIDwtIGRhdGEuZnJhbWUoc3ViamVjdF9uYW1lLCB0ZW1wZXJhdHVyZSwgZmx1X3N0YXR1cywgZ2VuZGVyLAogICAgICAgICAgICAgICAgICAgICAgYmxvb2QsIHN5bXB0b21zLCBzdHJpbmdBc0ZhY3RvcnMgPSBGQUxTRSkKYGBgCgpgYGB7cn0KIyBEaXNwbGF5IERhdGFmcmFtZQpwdF9kYXRhCmBgYAoKCiMjIyMgKipBY2Nlc3NpbmcgYSBkYXRhIGZyYW1lKioKCmBgYHtyfQojIGdldCBhIHNpbmdsZSBjb2x1bW4KcHRfZGF0YSRzdWJqZWN0X25hbWUKYGBgCgpgYGB7cn0KIyBHZXQgc2V2ZXJhbCBjb2x1bW5zIGJ5IHNwZWNpZnlpbmcgYSB2ZWN0b3Igb2YgbmFtZXMKcHRfZGF0YVtjKCJ0ZW1wZXJhdHVyZSIsICJmbHVfc3RhdHVzIildCmBgYApgYGB7cn0KIyBPUgpwdF9kYXRhWzI6M10KYGBgCgpgYGB7cn0KIyBBY2Nlc3MgYnkgcm93IGFuZCBjb2x1bW4KcHRfZGF0YVsxLDJdCmBgYAoKYGBge3J9CiMgQWNjZXNzaW5nIHNldmVyYWwgcm93cyBhbmQgc2V2ZXJhbCBjb2x1bW5zIHVzaW5nIHZlY3RvcnMKcHRfZGF0YVtjKDEsMyksIGMoMiw0KV0KYGBgCiMjICoqTGVhdmUgYSByb3cgb3IgY29sdW1uIGJsYW5rIHRvIGV4dHJhY3QgYWxsIHJvd3Mgb3IgY29sdW1ucyoqCgpgYGB7cn0KIyBjb2x1bW5zIDEsIGFsbCByb3dzCnB0X2RhdGFbICwgMV0KYGBgCgpgYGB7cn0KIyByb3cgMSwgYWxsIGNvbHVtbnMKcHRfZGF0YVsxLCBdCmBgYAoKYGBge3J9CiMgQWxsIHJvd3MsIGFsbCBjb2x1bW5zCnB0X2RhdGFbICwgXQpgYGAKYGBge3J9CiMgdGhlIGZvbGxvd2luZyBhcmUgZXF1aXZhbGVudApwdF9kYXRhW2MoMSwgMyksIGMoInRlbXBlcmF0dXJlIiwgImdlbmRlciIpXQpgYGAKCmBgYHtyfQpwdF9kYXRhWy0yLCBjKC0xLCAtMywgLTUsIC02KV0KCmBgYAoKIyMgKipNYXRyaXhlcyDigJTigJMqKgoKYGBge3J9CiMgY3JlYXRlIGEgMngyIG1hdHJpeAptIDwtIG1hdHJpeChjKDEsIDIsIDMsIDQpLCBucm93ID0gMikKbQpgYGAKCgpgYGB7cn0KIyBlcXVpdmFsZW50IHRvIHRoZSBhYm92ZQptIDwtIG1hdHJpeChjKDEsIDIsIDMsIDQpLCBuY29sID0gMikKbQpgYGAKCmBgYHtyfQojIGNyZWF0ZSBhIDJ4MyBtYXRyaXgKbSA8LSBtYXRyaXgoYygxLCAyLCAzLCA0LCA1LCA2KSwgbnJvdyA9IDIpCm0KYGBgCgoKYGBge3J9CiMgY3JlYXRlIDN4MiBtYXRyaXgKbSA8LSBtYXRyaXgoYygxLDIsMyw0LDUsNiksIG5jb2wgPTIpCm0KYGBgCgpgYGB7cn0KIyBleHRyYWN0IHZhbHVlcyBmcm9tIG1hdHJpeGVzCm1bMSwgMV0KYGBgCgpgYGB7cn0KbVszLCAyXQoKYGBgCgoKYGBge3J9CiMgeHRyYWN0IGFsbCBmaXJzdCByb3dzCm1bMSAsIF0KYGBgCgpgYGB7cn0KIyBleHRyYWN0IGNvbHVtbnMKbVssIDFdCmBgYAoKCgoKCgoK