STAT 408 - Week 5:
R Miscellanea and Debugging R Code
Consider the two lists, write out what gets printed from R.
msu.info <- list( name = c('Waded Cruzado','Andy Hoegh'),
degree.from = c('University of Texas at Arlington','Virginia Tech'),
job.title = c('President', 'Assistant Professor of Statistics'))
msu.info
msu.info2 <- list(c('Waded Cruzado','University of Texas at Arlington',
'President'), c('Andy Hoegh',
'Virginia Tech','Assistant Professor of Statistics'))
msu.info2
What do all of those brackets mean?
Explore the indexing with these commands.
msu.info <- list( name = c('Waded Cruzado','Andy Hoegh'),
degree.from = c('University of Texas at Arlington','Virginia Tech'),
job.title = c('President', 'Assistant Professor of Statistics'))
msu.info[1]
msu.info[[1]]
msu.info$name[2]
msu.info[1:2]
unlist(msu.info)
Create an array of dimension 2 x 2 x 3, where each of the three 2 x 2 subarray (or matrix) is the Identity matrix.
Another important skill is merging or combining data sets.
Consider the two data frames, how can we merge them and what should be the dimensions of the merged data frame.
df1 <- data.frame(school = c('MSU','VT','Mines'),
state= c('MT','VA','CO'), stringsAsFactors = F)
df1
## school state
## 1 MSU MT
## 2 VT VA
## 3 Mines CO
df2 <- data.frame(school = c('Mines','MSU','VT'),
enrollment = c(5794,15688,30598), stringsAsFactors = F)
df2
## school enrollment
## 1 Mines 5794
## 2 MSU 15688
## 3 VT 30598
Combine the two data sets
df.cost <- data.frame( ski.resort = c('Bridger Bowl', 'Big Sky', 'Steamboat', 'Jackson'),
ticket.cost = c(60, 'depends',145, 130))
df.acres <- data.frame( ski.hill = c('Bridger Bowl', 'Jackson', 'Steamboat', 'Big Sky'),
skiable.acres = c(2000, "2500+",2965, 5800))
Fix the script that determines if each item in a sequence is less than zero.
val.in <- seq(-1,1,by=.25)
if (val.in < 0){
print(paste(val.in, 'less than 0'))
}
## Warning in if (val.in < 0) {: the condition has length > 1 and only the
## first element will be used
## [1] "-1 less than 0" "-0.75 less than 0" "-0.5 less than 0"
## [4] "-0.25 less than 0" "0 less than 0" "0.25 less than 0"
## [7] "0.5 less than 0" "0.75 less than 0" "1 less than 0"
Identify the issue(s) with this function
MergeData <- function(data1, data2, key1, key2){
# function to merge two data sets
# Args: data1 - first dataset
# data2 - second dataset
# key1 - key name in first dataset
# key2 - key name in second dataset
# Returns: merged dataframe if key matches,
# otherwise print an error
if (key1 = key2){
data.out <- join(data1,data2, by = key1)
return(dataout)
} else {
stop('keys are not the same')
}
}
MergeData(df1,df2,"school","school")