#Preliminary Packages 
library(ggplot2)

#Preliminary Calls 
b <- 2 
sd1 <- c(0.5, 0.75)

######################## FUNCTION 1

# Creates Values / Model 
# Input: Sample Size, Sample Means, Sample SD
# Output: A Data Frame Representing the Given Parameters 
myFunction <- function(nGroup = b, nName1 = c("Low", "High"),
                       nSize1 = c(50,50), nMean1 = c(1.5,2), sd = sd1){
  ID <- 1:100
  resVar <- c(rnorm(n = nSize1[1], mean = nMean1[1], sd = sd[1]),
              rnorm(n = nSize1[2], mean = nMean1[2], sd = sd[2]))
  TGroup <- rep(nName1, nSize1)
  ANOdata <- data.frame(ID,TGroup, resVar)
  return(ANOdata)
}

myDF <- myFunction()
####################################


########################### FUNCTION 2 
# Creates ANOVA 
# Input: Data Frame
# Output: Anova Test
  
  AnoFunction <- function(data=myDF){
  ANOmodel <- aov(myDF$resVar ~ myDF$TGroup, data = myDF)
  ANOSummary <- summary(ANOmodel)
  return(ANOSummary)
  }
  
AnoFunction()
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## myDF$TGroup  1  4.481   4.481   14.32 0.000266 ***
## Residuals   98 30.667   0.313                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#####################################
   

########################## FUNCTION 3
# Function to create BoxPlot 
# Input 

ANOVAPlot <- function(data = myDF){
  ggplot(data = data, aes(x = myDF$TGroup, y = myDF$resVar, fill = myDF$TGroup)) + 
    geom_boxplot(colour = "Black") + 
    scale_y_continuous(name = "Metabolic Rate") + 
    scale_x_discrete(name = "Temperature Treatment") +
    ggtitle("Metabolic Rates in High vs Low Temperature") +
    theme_bw()
}
ANOVAPlot()

######################################


######################### FUNCTION 4
# Function to Extract P-Values 
# Input: Anova test and data frame 
# Output: Extraction of p-value
myDF2 <- myFunction()
ANOVApVals <- function(data = myDF2){
  ANOVApVals <- aov(myDF$resVar ~ myDF$TGroup, data = data)
  summary(ANOVApVals)[[1]]["Pr(>F)"][1]
}

ANOVApVals()
##                Pr(>F)    
## myDF$TGroup 0.0002659 ***
## Residuals                
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#######################################


######################## FOR LOOP - P-Values 
pVals <- vector(mode = "numeric")
for(i in 1:10){
  forloopdf <- myFunction()
  pVals[i] <- ANOVApVals(forloopdf)
}

pVals
## [[1]]
## [1] 0.000265858          NA
## 
## [[2]]
## [1] 0.000265858          NA
## 
## [[3]]
## [1] 0.000265858          NA
## 
## [[4]]
## [1] 0.000265858          NA
## 
## [[5]]
## [1] 0.000265858          NA
## 
## [[6]]
## [1] 0.000265858          NA
## 
## [[7]]
## [1] 0.000265858          NA
## 
## [[8]]
## [1] 0.000265858          NA
## 
## [[9]]
## [1] 0.000265858          NA
## 
## [[10]]
## [1] 0.000265858          NA

Question 3:

# Form Results Matrix 
Results <- matrix(nrow=20,ncol=4)
colnames(Results)=c("Sample Size", "Metabolic Rate" ,"Slope","P-Value")


###### Couldn't get this to work but I think it is close!

#for(i in 1:10){
  #forloopdf <- myFunction()
  #pVals[i] <- ANOVApVals(forloopdf)
  #Results[i, 1] <- pVals[i]
#}

# View(Results)