Link to Home
# Using a for loop, write a function to calculate the number of zeroes in a numeric vector. Before entering the loop, set up a counter variable counter <- 0. Inside the loop, add 1 to counter each time you have a zero in the matrix. Finally, use return(counter) for the output.
my_vec <- sample(0:10, size=10)
print(my_vec)
## [1] 7 9 10 8 5 0 2 1 6 4
counter <- 0
for(i in 1:length(my_vec)){
if(my_vec[i] == 0){
counter <- counter + 1
}
}
print(counter)
## [1] 1
# Use subsetting instead of a loop to rewrite the function as a single line of code.
my_vec <- sample(0:10, size=10)
print(my_vec)
## [1] 10 5 1 8 2 9 7 6 3 4
count <- sum(my_vec == 0)
print(count)
## [1] 0
# Write a function that takes as input two integers representing the number of rows and columns in a matrix. The output is a matrix of these dimensions in which each element is the product of the row number x the column number.
# Making the matrix
x <- 5
y <- 10
fake.matrix <- matrix(data=NA,nrow=x,ncol=y)
print(fake.matrix)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] NA NA NA NA NA NA NA NA NA NA
## [2,] NA NA NA NA NA NA NA NA NA NA
## [3,] NA NA NA NA NA NA NA NA NA NA
## [4,] NA NA NA NA NA NA NA NA NA NA
## [5,] NA NA NA NA NA NA NA NA NA NA
for (i in 1:nrow(fake.matrix)) {
for (j in 1:ncol(fake.matrix)) {
fake.matrix[i,j] <- i*j
} # end of column j loop
} # end of row i loop
print(fake.matrix)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 2 3 4 5 6 7 8 9 10
## [2,] 2 4 6 8 10 12 14 16 18 20
## [3,] 3 6 9 12 15 18 21 24 27 30
## [4,] 4 8 12 16 20 24 28 32 36 40
## [5,] 5 10 15 20 25 30 35 40 45 50
# Creating the custom function to multiple col # by row #
row.times.col <- function(x=2,y=3){
fake.matrix <- matrix(data=NA,nrow=x,ncol=y)
for (i in 1:nrow(fake.matrix)) {
for (j in 1:ncol(fake.matrix)) {
fake.matrix[i,j] <- i*j
} # end of column j loop
} # end of row i loop
return(fake.matrix)
}
# Testing with default values
row.times.col()
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 2 4 6
# Testing with inputting values
row.times.col(3,6)
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 2 3 4 5 6
## [2,] 2 4 6 8 10 12
## [3,] 3 6 9 12 15 18
# In the next few lectures, you will learn how to do a randomization test on your data. We will complete some of the steps today to practice calling custom functions within a for loop. Use the code from the March 31st lecture (Randomization Tests) to complete the following steps:
# Simulate a dataset with 3 groups of data, each group drawn from a distribution with a different mean. The final data frame should have 1 column for group and 1 column for the response variable.
library(ggplot2)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ tibble 3.1.6 ✓ dplyr 1.0.7
## ✓ tidyr 1.1.4 ✓ stringr 1.4.0
## ✓ readr 2.1.1 ✓ forcats 0.5.1
## ✓ purrr 0.3.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
group1 <- rnorm(100, mean = 50, sd = 5)
group2 <- rnorm(100, mean = 60, sd = 5)
group3 <- rnorm(100, mean = 40, sd = 5)
fake.data <- data.frame(group1, group2, group3)
print(fake.data)
## group1 group2 group3
## 1 55.30097 60.98448 42.85358
## 2 45.77565 59.22336 41.29632
## 3 51.38747 49.45846 45.63879
## 4 53.66245 62.04339 40.17344
## 5 51.06825 58.20708 41.06396
## 6 51.15420 65.32038 44.57150
## 7 51.97781 60.01888 32.40184
## 8 54.98691 57.50200 50.46375
## 9 41.63882 61.77415 34.34152
## 10 55.57577 61.60411 36.66160
## 11 46.27885 61.29964 37.17992
## 12 53.30185 67.39351 35.96299
## 13 49.02449 65.98577 44.57832
## 14 51.34115 69.77518 46.57497
## 15 54.31033 64.31145 39.29983
## 16 51.35365 64.39120 40.19305
## 17 62.98269 59.44709 51.64911
## 18 41.30722 61.92355 32.19416
## 19 52.45012 68.25243 46.34583
## 20 51.12666 60.44221 38.44537
## 21 49.05181 56.84259 37.10303
## 22 57.85593 61.06153 41.16618
## 23 49.88636 58.53969 36.13779
## 24 46.66330 60.87513 41.56003
## 25 56.62993 51.77832 39.03001
## 26 56.55011 57.80312 38.08675
## 27 42.77633 61.95143 35.90583
## 28 47.49895 52.38177 38.46150
## 29 59.80305 66.80519 44.89225
## 30 55.19911 54.21044 34.05764
## 31 50.24445 58.30597 44.32619
## 32 46.49787 52.87537 40.01252
## 33 50.23836 52.95241 40.62626
## 34 51.25605 56.79428 42.22000
## 35 47.56662 71.74984 44.29766
## 36 49.39292 61.61667 48.45131
## 37 46.19662 67.04370 37.68822
## 38 47.71977 65.07772 37.05480
## 39 51.08094 55.78217 41.09816
## 40 44.61554 60.76949 41.51295
## 41 43.22816 62.72169 39.14270
## 42 50.26643 59.21150 50.85195
## 43 44.16160 63.86662 39.17627
## 44 53.22452 56.06127 41.43312
## 45 53.63191 53.50250 43.25869
## 46 46.95865 67.77312 43.63369
## 47 41.25335 64.22656 35.34603
## 48 50.62465 61.28932 50.13056
## 49 59.35419 65.71384 44.82918
## 50 56.41965 63.62600 33.94373
## 51 52.48291 61.05220 38.31894
## 52 41.88035 63.38647 42.91044
## 53 49.68522 54.91015 35.22213
## 54 59.27907 61.11253 38.64890
## 55 49.28418 61.25511 39.32895
## 56 49.65478 56.06732 36.84174
## 57 57.11773 62.37078 43.91306
## 58 50.13534 71.90059 38.24910
## 59 47.62843 56.47954 37.51796
## 60 41.98729 54.92327 40.18343
## 61 52.87563 55.36410 41.41148
## 62 47.72086 61.36580 37.84263
## 63 52.18359 61.29872 43.08481
## 64 47.35765 63.73366 35.50619
## 65 47.37532 44.67721 30.32574
## 66 45.68275 62.31464 33.72601
## 67 57.30089 59.74162 34.18659
## 68 62.47331 62.72486 44.51307
## 69 53.66123 62.54045 36.54830
## 70 45.28103 60.66052 35.54133
## 71 50.59687 60.25908 43.02132
## 72 53.64101 61.15459 37.24795
## 73 52.40548 58.62926 36.94701
## 74 54.67887 57.35500 44.80676
## 75 42.39649 51.82093 34.57114
## 76 49.91240 55.25407 33.76411
## 77 54.15359 53.31707 47.44069
## 78 50.24536 56.50488 39.62786
## 79 42.90786 67.55624 37.61046
## 80 50.81316 60.36892 33.38712
## 81 51.34679 59.09417 46.56143
## 82 55.10470 54.39782 36.15953
## 83 43.02123 60.41130 39.13486
## 84 46.20166 54.41029 38.82865
## 85 47.99529 56.46540 43.68443
## 86 45.11881 58.02866 41.77820
## 87 48.52488 52.55712 37.39302
## 88 48.28497 65.01679 36.73925
## 89 49.74533 61.75086 48.34594
## 90 49.07039 52.77490 39.27309
## 91 43.45748 65.46900 48.83552
## 92 54.95214 56.83170 39.74026
## 93 46.16332 53.45894 36.21345
## 94 47.61805 60.24934 36.21725
## 95 47.69296 59.81827 44.02914
## 96 45.20360 62.62147 42.80025
## 97 51.85081 55.50383 36.90362
## 98 52.74112 61.82861 25.04598
## 99 42.94049 53.86556 39.68609
## 100 52.24439 60.24970 33.77494
new.fake.data <- fake.data %>%
pivot_longer(cols=group1:group3,
names_to = "Group",
values_to = "ResponseVariable")
head(new.fake.data)
## # A tibble: 6 × 2
## Group ResponseVariable
## <chr> <dbl>
## 1 group1 55.3
## 2 group2 61.0
## 3 group3 42.9
## 4 group1 45.8
## 5 group2 59.2
## 6 group3 41.3
# Write a custom function that 1) reshuffles the response variable, and 2) calculates the mean of each group in the reshuffled data. Store the means in a vector of length 3.
##################################################
# function: shuffleData
# randomize data for regression analysis and get the mean of newly shuffled values
# input: 2-column data frame (group, response)
# output: 2-column data frame (group, response)
#-------------------------------------------------
shuffleData <- function(z=dataframe) {
z$ResponseVariable <- sample(z$ResponseVariable)
z1 <- z[z$Group == "group1",]
z2 <- z[z$Group == "group2",]
z3 <- z[z$Group == "group3",]
mean1 <- mean(z1$ResponseVariable)
mean2 <- mean(z2$ResponseVariable)
mean3 <- mean(z3$ResponseVariable)
mean_vec <- c(mean1,mean2,mean3)
return(mean_vec)
}
shuffleData(new.fake.data)
## [1] 49.27772 50.16815 50.47529
# Use a for loop to repeat the function in b 100 times. Store the results in a data frame that has 1 column indicating the replicate number and 1 column for each new group mean, for a total of 4 columns.
# Make an empty matrix to start
a.matrix <- matrix(data = NA, nrow = 100, ncol = 3)
print(a.matrix)
## [,1] [,2] [,3]
## [1,] NA NA NA
## [2,] NA NA NA
## [3,] NA NA NA
## [4,] NA NA NA
## [5,] NA NA NA
## [6,] NA NA NA
## [7,] NA NA NA
## [8,] NA NA NA
## [9,] NA NA NA
## [10,] NA NA NA
## [11,] NA NA NA
## [12,] NA NA NA
## [13,] NA NA NA
## [14,] NA NA NA
## [15,] NA NA NA
## [16,] NA NA NA
## [17,] NA NA NA
## [18,] NA NA NA
## [19,] NA NA NA
## [20,] NA NA NA
## [21,] NA NA NA
## [22,] NA NA NA
## [23,] NA NA NA
## [24,] NA NA NA
## [25,] NA NA NA
## [26,] NA NA NA
## [27,] NA NA NA
## [28,] NA NA NA
## [29,] NA NA NA
## [30,] NA NA NA
## [31,] NA NA NA
## [32,] NA NA NA
## [33,] NA NA NA
## [34,] NA NA NA
## [35,] NA NA NA
## [36,] NA NA NA
## [37,] NA NA NA
## [38,] NA NA NA
## [39,] NA NA NA
## [40,] NA NA NA
## [41,] NA NA NA
## [42,] NA NA NA
## [43,] NA NA NA
## [44,] NA NA NA
## [45,] NA NA NA
## [46,] NA NA NA
## [47,] NA NA NA
## [48,] NA NA NA
## [49,] NA NA NA
## [50,] NA NA NA
## [51,] NA NA NA
## [52,] NA NA NA
## [53,] NA NA NA
## [54,] NA NA NA
## [55,] NA NA NA
## [56,] NA NA NA
## [57,] NA NA NA
## [58,] NA NA NA
## [59,] NA NA NA
## [60,] NA NA NA
## [61,] NA NA NA
## [62,] NA NA NA
## [63,] NA NA NA
## [64,] NA NA NA
## [65,] NA NA NA
## [66,] NA NA NA
## [67,] NA NA NA
## [68,] NA NA NA
## [69,] NA NA NA
## [70,] NA NA NA
## [71,] NA NA NA
## [72,] NA NA NA
## [73,] NA NA NA
## [74,] NA NA NA
## [75,] NA NA NA
## [76,] NA NA NA
## [77,] NA NA NA
## [78,] NA NA NA
## [79,] NA NA NA
## [80,] NA NA NA
## [81,] NA NA NA
## [82,] NA NA NA
## [83,] NA NA NA
## [84,] NA NA NA
## [85,] NA NA NA
## [86,] NA NA NA
## [87,] NA NA NA
## [88,] NA NA NA
## [89,] NA NA NA
## [90,] NA NA NA
## [91,] NA NA NA
## [92,] NA NA NA
## [93,] NA NA NA
## [94,] NA NA NA
## [95,] NA NA NA
## [96,] NA NA NA
## [97,] NA NA NA
## [98,] NA NA NA
## [99,] NA NA NA
## [100,] NA NA NA
# Write a for loop to get 100 rows of means
for(i in 1:100){
a.matrix[i,] <- shuffleData(new.fake.data)
}
print(a.matrix)
## [,1] [,2] [,3]
## [1,] 49.56520 49.42432 50.93164
## [2,] 49.59777 49.71924 50.60415
## [3,] 50.74859 50.45956 48.71301
## [4,] 50.40429 48.75417 50.76270
## [5,] 49.52512 49.51331 50.88273
## [6,] 50.37519 51.13974 48.40622
## [7,] 49.63123 51.03217 49.25775
## [8,] 48.90228 50.52105 50.49782
## [9,] 50.56713 48.92518 50.42884
## [10,] 50.26123 49.91411 49.74582
## [11,] 50.97213 50.07621 48.87282
## [12,] 50.63818 50.34431 48.93867
## [13,] 51.13927 49.82303 48.95885
## [14,] 49.31764 51.84669 48.75682
## [15,] 50.49465 50.09101 49.33549
## [16,] 49.56411 50.12179 50.23526
## [17,] 50.79521 50.51684 48.60911
## [18,] 51.81986 49.04791 49.05338
## [19,] 50.67494 49.26055 49.98567
## [20,] 51.68262 47.73954 50.49899
## [21,] 50.97656 49.40913 49.53546
## [22,] 50.09640 50.33018 49.49458
## [23,] 48.62717 49.79804 51.49595
## [24,] 50.49658 49.41832 50.00625
## [25,] 49.16149 50.07934 50.68032
## [26,] 50.03147 49.39242 50.49727
## [27,] 50.57866 49.67055 49.67194
## [28,] 50.24559 50.50290 49.17266
## [29,] 52.06625 49.60013 48.25477
## [30,] 50.88575 48.98989 50.04552
## [31,] 50.67517 49.95514 49.29084
## [32,] 49.44379 49.98997 50.48739
## [33,] 50.62756 48.83930 50.45430
## [34,] 50.10892 49.86489 49.94735
## [35,] 48.88577 51.87744 49.15794
## [36,] 50.72743 49.58743 49.60629
## [37,] 49.84595 49.78865 50.28656
## [38,] 51.05728 49.11600 49.74787
## [39,] 50.45568 49.51532 49.95015
## [40,] 49.68201 49.73170 50.50744
## [41,] 51.56163 48.84211 49.51742
## [42,] 49.73373 49.92721 50.26022
## [43,] 49.70035 50.05146 50.16934
## [44,] 49.90030 49.90702 50.11384
## [45,] 49.25240 50.70263 49.96612
## [46,] 51.32316 49.47232 49.12567
## [47,] 49.35023 50.41710 50.15382
## [48,] 49.93892 49.52535 50.45688
## [49,] 50.27982 48.66893 50.97240
## [50,] 49.96475 50.85805 49.09835
## [51,] 51.18943 50.89785 47.83387
## [52,] 50.12051 49.96953 49.83111
## [53,] 48.72980 50.17171 51.01964
## [54,] 49.42641 50.75895 49.73580
## [55,] 50.17688 49.25840 50.48587
## [56,] 49.52078 48.92639 51.47398
## [57,] 50.49788 49.73707 49.68620
## [58,] 50.65865 50.22817 49.03433
## [59,] 51.28374 48.12991 50.50750
## [60,] 50.36521 49.65817 49.89778
## [61,] 49.24566 49.72720 50.94829
## [62,] 51.25993 48.60685 50.05438
## [63,] 48.72299 50.93070 50.26746
## [64,] 49.39807 49.77322 50.74987
## [65,] 49.44599 50.07493 50.40023
## [66,] 49.90826 50.52176 49.49113
## [67,] 51.20428 48.56637 50.15050
## [68,] 50.85065 50.41722 48.65328
## [69,] 50.26122 49.81571 49.84422
## [70,] 50.67528 48.83598 50.40990
## [71,] 50.20796 49.15654 50.55666
## [72,] 49.53343 51.25624 49.13148
## [73,] 48.95657 49.75533 51.20925
## [74,] 50.09220 51.89943 47.92952
## [75,] 49.51442 50.05303 50.35370
## [76,] 50.29542 49.71398 49.91175
## [77,] 50.43317 50.20685 49.28113
## [78,] 48.76473 50.29352 50.86291
## [79,] 49.47644 50.67994 49.76477
## [80,] 50.40284 50.00620 49.51211
## [81,] 50.05727 49.77762 50.08626
## [82,] 48.56179 49.43953 51.91984
## [83,] 49.47744 50.49402 49.94969
## [84,] 48.53113 49.86756 51.52246
## [85,] 49.84799 50.42591 49.64725
## [86,] 49.92818 50.12505 49.86792
## [87,] 49.85766 49.65011 50.41338
## [88,] 49.69983 49.02535 51.19598
## [89,] 48.50595 49.98493 51.43028
## [90,] 51.66151 48.91436 49.34529
## [91,] 49.51921 50.15646 50.24548
## [92,] 48.89101 50.39824 50.63190
## [93,] 51.10344 49.85502 48.96270
## [94,] 49.94332 49.80656 50.17127
## [95,] 48.53647 51.66915 49.71554
## [96,] 49.93945 49.08219 50.89951
## [97,] 50.20218 49.27575 50.44322
## [98,] 50.45164 50.70828 48.76123
## [99,] 48.88061 49.88466 51.15588
## [100,] 48.88296 50.09452 50.94367
# Making that into a data frame
rep_number <- seq(1:100)
b.matrix <- cbind(rep_number, a.matrix)
# Renaming the columns so they make sense
colnames(b.matrix) <- c("Replicate_Number","Group_1_Mean","Group_2_Mean","Group_3_Mean")
print(b.matrix)
## Replicate_Number Group_1_Mean Group_2_Mean Group_3_Mean
## [1,] 1 49.56520 49.42432 50.93164
## [2,] 2 49.59777 49.71924 50.60415
## [3,] 3 50.74859 50.45956 48.71301
## [4,] 4 50.40429 48.75417 50.76270
## [5,] 5 49.52512 49.51331 50.88273
## [6,] 6 50.37519 51.13974 48.40622
## [7,] 7 49.63123 51.03217 49.25775
## [8,] 8 48.90228 50.52105 50.49782
## [9,] 9 50.56713 48.92518 50.42884
## [10,] 10 50.26123 49.91411 49.74582
## [11,] 11 50.97213 50.07621 48.87282
## [12,] 12 50.63818 50.34431 48.93867
## [13,] 13 51.13927 49.82303 48.95885
## [14,] 14 49.31764 51.84669 48.75682
## [15,] 15 50.49465 50.09101 49.33549
## [16,] 16 49.56411 50.12179 50.23526
## [17,] 17 50.79521 50.51684 48.60911
## [18,] 18 51.81986 49.04791 49.05338
## [19,] 19 50.67494 49.26055 49.98567
## [20,] 20 51.68262 47.73954 50.49899
## [21,] 21 50.97656 49.40913 49.53546
## [22,] 22 50.09640 50.33018 49.49458
## [23,] 23 48.62717 49.79804 51.49595
## [24,] 24 50.49658 49.41832 50.00625
## [25,] 25 49.16149 50.07934 50.68032
## [26,] 26 50.03147 49.39242 50.49727
## [27,] 27 50.57866 49.67055 49.67194
## [28,] 28 50.24559 50.50290 49.17266
## [29,] 29 52.06625 49.60013 48.25477
## [30,] 30 50.88575 48.98989 50.04552
## [31,] 31 50.67517 49.95514 49.29084
## [32,] 32 49.44379 49.98997 50.48739
## [33,] 33 50.62756 48.83930 50.45430
## [34,] 34 50.10892 49.86489 49.94735
## [35,] 35 48.88577 51.87744 49.15794
## [36,] 36 50.72743 49.58743 49.60629
## [37,] 37 49.84595 49.78865 50.28656
## [38,] 38 51.05728 49.11600 49.74787
## [39,] 39 50.45568 49.51532 49.95015
## [40,] 40 49.68201 49.73170 50.50744
## [41,] 41 51.56163 48.84211 49.51742
## [42,] 42 49.73373 49.92721 50.26022
## [43,] 43 49.70035 50.05146 50.16934
## [44,] 44 49.90030 49.90702 50.11384
## [45,] 45 49.25240 50.70263 49.96612
## [46,] 46 51.32316 49.47232 49.12567
## [47,] 47 49.35023 50.41710 50.15382
## [48,] 48 49.93892 49.52535 50.45688
## [49,] 49 50.27982 48.66893 50.97240
## [50,] 50 49.96475 50.85805 49.09835
## [51,] 51 51.18943 50.89785 47.83387
## [52,] 52 50.12051 49.96953 49.83111
## [53,] 53 48.72980 50.17171 51.01964
## [54,] 54 49.42641 50.75895 49.73580
## [55,] 55 50.17688 49.25840 50.48587
## [56,] 56 49.52078 48.92639 51.47398
## [57,] 57 50.49788 49.73707 49.68620
## [58,] 58 50.65865 50.22817 49.03433
## [59,] 59 51.28374 48.12991 50.50750
## [60,] 60 50.36521 49.65817 49.89778
## [61,] 61 49.24566 49.72720 50.94829
## [62,] 62 51.25993 48.60685 50.05438
## [63,] 63 48.72299 50.93070 50.26746
## [64,] 64 49.39807 49.77322 50.74987
## [65,] 65 49.44599 50.07493 50.40023
## [66,] 66 49.90826 50.52176 49.49113
## [67,] 67 51.20428 48.56637 50.15050
## [68,] 68 50.85065 50.41722 48.65328
## [69,] 69 50.26122 49.81571 49.84422
## [70,] 70 50.67528 48.83598 50.40990
## [71,] 71 50.20796 49.15654 50.55666
## [72,] 72 49.53343 51.25624 49.13148
## [73,] 73 48.95657 49.75533 51.20925
## [74,] 74 50.09220 51.89943 47.92952
## [75,] 75 49.51442 50.05303 50.35370
## [76,] 76 50.29542 49.71398 49.91175
## [77,] 77 50.43317 50.20685 49.28113
## [78,] 78 48.76473 50.29352 50.86291
## [79,] 79 49.47644 50.67994 49.76477
## [80,] 80 50.40284 50.00620 49.51211
## [81,] 81 50.05727 49.77762 50.08626
## [82,] 82 48.56179 49.43953 51.91984
## [83,] 83 49.47744 50.49402 49.94969
## [84,] 84 48.53113 49.86756 51.52246
## [85,] 85 49.84799 50.42591 49.64725
## [86,] 86 49.92818 50.12505 49.86792
## [87,] 87 49.85766 49.65011 50.41338
## [88,] 88 49.69983 49.02535 51.19598
## [89,] 89 48.50595 49.98493 51.43028
## [90,] 90 51.66151 48.91436 49.34529
## [91,] 91 49.51921 50.15646 50.24548
## [92,] 92 48.89101 50.39824 50.63190
## [93,] 93 51.10344 49.85502 48.96270
## [94,] 94 49.94332 49.80656 50.17127
## [95,] 95 48.53647 51.66915 49.71554
## [96,] 96 49.93945 49.08219 50.89951
## [97,] 97 50.20218 49.27575 50.44322
## [98,] 98 50.45164 50.70828 48.76123
## [99,] 99 48.88061 49.88466 51.15588
## [100,] 100 48.88296 50.09452 50.94367
# Use qplot() to create a histogram of the means for each reshuffled group. Or, if you want a challenge, use ggplot() to overlay all 3 histograms in the same figure. How do the distributions of reshuffled means compare to the original means?
# Group 1 Means
qplot(b.matrix[,2]) # how do I change the x-axes?
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# Group 2 Means
qplot(b.matrix[,3])
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# Group 3 Means
qplot(b.matrix[,4])
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
head(b.matrix)
## Replicate_Number Group_1_Mean Group_2_Mean Group_3_Mean
## [1,] 1 49.56520 49.42432 50.93164
## [2,] 2 49.59777 49.71924 50.60415
## [3,] 3 50.74859 50.45956 48.71301
## [4,] 4 50.40429 48.75417 50.76270
## [5,] 5 49.52512 49.51331 50.88273
## [6,] 6 50.37519 51.13974 48.40622
c.matrix <- b.matrix[,-1]
head(c.matrix)
## Group_1_Mean Group_2_Mean Group_3_Mean
## [1,] 49.56520 49.42432 50.93164
## [2,] 49.59777 49.71924 50.60415
## [3,] 50.74859 50.45956 48.71301
## [4,] 50.40429 48.75417 50.76270
## [5,] 49.52512 49.51331 50.88273
## [6,] 50.37519 51.13974 48.40622
mean.df <- as.data.frame(c.matrix)
head(mean.df)
## Group_1_Mean Group_2_Mean Group_3_Mean
## 1 49.56520 49.42432 50.93164
## 2 49.59777 49.71924 50.60415
## 3 50.74859 50.45956 48.71301
## 4 50.40429 48.75417 50.76270
## 5 49.52512 49.51331 50.88273
## 6 50.37519 51.13974 48.40622
# Use ggplot to put three histos on top of eachother
ggplot(data=mean.df)+
geom_histogram(aes(x=Group_1_Mean),fill="blueviolet")+
geom_histogram(aes(x=Group_2_Mean),fill="chocolate2")+
geom_histogram(aes(x=Group_3_Mean),fill="cyan4")+
geom_vline(xintercept = mean(fake.data$group1), color="blueviolet")+
geom_vline(xintercept = mean(fake.data$group2), color="chocolate2")+
geom_vline(xintercept = mean(fake.data$group3), color="cyan4")+
labs(title = "Layered Histograms",
y="Mean 'Infection Rates'",
x="Three Sample Groups")
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
# Makeshift legend: blueviolet = Group 1, chocolate2 = Group 2, cyan4 = Group 3