Intro

Received some mass spec data in Excel format

library("readxl")
library("vioplot")
## Loading required package: sm
## Package 'sm', version 2.2-5.7: type help(sm) for summary information
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library("gplots")
## 
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
## 
##     lowess
pos <- read_xlsx("Pos-Neg Sept11.xlsx",sheet = 1,col_names = FALSE)
## New names:
## * `` -> ...1
## * `` -> ...2
## * `` -> ...3
## * `` -> ...4
## * `` -> ...5
## * ...
neg <- read_xlsx("Pos-Neg Sept11.xlsx",sheet = 2,col_names = FALSE)
## New names:
## * `` -> ...1
## * `` -> ...2
## * `` -> ...3
## * `` -> ...4
## * `` -> ...5
## * ...
dim(pos)
## [1]   43 9972
dim(neg)
## [1]   27 4901
pos[1:8,1:6]
## # A tibble: 8 × 6
##   ...1                 ...2                 ...3    ...4  ...5        ...6      
##   <chr>                <chr>                <chr>   <chr> <chr>       <chr>     
## 1 Primary ID           Run                  Condit… Group 0.02_296.1… 0.02_307.…
## 2 Neutral mass (Da)    <NA>                 <NA>    <NA>  <NA>        <NA>      
## 3 m/z                  <NA>                 <NA>    <NA>  296.105200… 307.11950…
## 4 Retention time (min) <NA>                 <NA>    <NA>  0.02        0.02      
## 5 Accepted Description <NA>                 <NA>    <NA>  <NA>        <NA>      
## 6 Accepted ID          <NA>                 <NA>    <NA>  <NA>        <NA>      
## 7 1                    20_Sep11 Seasol Mar… 40787   <NA>  0           0         
## 8 2                    20_Sep11 Seasol Mar… 40787   <NA>  0           0

Cleaning and normalisation

posdat <- t(pos[7:nrow(pos),5:ncol(pos)])
posdat <- apply(X = posdat, MARGIN = 2, FUN = as.numeric)
head(posdat)
##          [,1]      [,2]     [,3] [,4] [,5]     [,6]     [,7]      [,8] [,9]
## [1,]  0.00000   0.00000   0.0000    0    0   0.0000  0.00000   0.00000    0
## [2,]  0.00000   0.00000   0.0000    0    0   0.0000  0.00000   0.00000    0
## [3,]  0.00000  92.69543 227.7682    0    0 206.7983 72.70763 101.42360    0
## [4,]  0.00000   0.00000   0.0000    0    0   0.0000  0.00000   0.00000    0
## [5,]  0.00000   0.00000   0.0000    0    0   0.0000  0.00000   0.00000    0
## [6,] 58.37006 276.52670 148.7355    0    0 185.9440 91.38412  35.40295    0
##      [,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19]    [,20] [,21]
## [1,]     0     0     0     0     0     0     0     0     0     0  0.00000     0
## [2,]     0     0     0     0     0     0     0     0     0     0  0.00000     0
## [3,]     0     0     0     0     0     0     0     0     0     0 12.38528     0
## [4,]     0     0     0     0     0     0     0     0     0     0  0.00000     0
## [5,]     0     0     0     0     0     0     0     0     0     0  0.00000     0
## [6,]     0     0     0     0     0     0     0     0     0     0  0.00000     0
##      [,22]    [,23] [,24] [,25] [,26] [,27] [,28]    [,29] [,30] [,31]    [,32]
## [1,]     0  0.00000     0     0     0     0     0  0.00000     0     0  0.00000
## [2,]     0  0.00000     0     0     0     0     0  0.00000     0     0  0.00000
## [3,]     0 14.05922     0     0     0     0     0 16.32809     0     0 17.55408
## [4,]     0  0.00000     0     0     0     0     0  0.00000     0     0  0.00000
## [5,]     0  0.00000     0     0     0     0     0  0.00000     0     0  0.00000
## [6,]     0  0.00000     0     0     0     0     0  0.00000     0     0  0.00000
##      [,33] [,34] [,35] [,36] [,37]
## [1,]     0     0     0     0     0
## [2,]     0     0     0     0     0
## [3,]     0     0     0     0     0
## [4,]     0     0     0     0     0
## [5,]     0     0     0     0     0
## [6,]     0     0     0     0     0
dim(posdat)
## [1] 9968   37
pos_row_info <- pos[7:nrow(pos),1:4]
colnames(pos_row_info) <- c("num","run","ID","group")
pos_row_info
## # A tibble: 37 × 4
##    num   run                                   ID    group  
##    <chr> <chr>                                 <chr> <chr>  
##  1 1     20_Sep11 Seasol Marker Screen Pos_01  40787 <NA>   
##  2 2     20_Sep11 Seasol Marker Screen Pos_02  40787 <NA>   
##  3 3     20_Sep11 Seasol Marker Screen Pos_03  40787 <NA>   
##  4 4     20_Sep11 Seasol Marker Screen Pos_03A 40787 Group 2
##  5 5     20_Sep11 Seasol Marker Screen Pos_03B 40787 Group 2
##  6 6     20_Sep11 Seasol Marker Screen Pos_04  40787 <NA>   
##  7 7     20_Sep11 Seasol Marker Screen Pos_05  40787 <NA>   
##  8 8     20_Sep11 Seasol Marker Screen Pos_06  40787 <NA>   
##  9 9     20_Sep11 Seasol Marker Screen Pos_07  40787 Group 1
## 10 10    20_Sep11 Seasol Marker Screen Pos_08  40787 Group 1
## # … with 27 more rows
dim(pos_row_info)
## [1] 37  4
colnames(posdat) <- sapply(strsplit(pos_row_info$run," "),"[[",5)
rownames(posdat) <-1:nrow(posdat)
head(posdat)
##     Pos_01    Pos_02   Pos_03 Pos_03A Pos_03B   Pos_04   Pos_05    Pos_06
## 1  0.00000   0.00000   0.0000       0       0   0.0000  0.00000   0.00000
## 2  0.00000   0.00000   0.0000       0       0   0.0000  0.00000   0.00000
## 3  0.00000  92.69543 227.7682       0       0 206.7983 72.70763 101.42360
## 4  0.00000   0.00000   0.0000       0       0   0.0000  0.00000   0.00000
## 5  0.00000   0.00000   0.0000       0       0   0.0000  0.00000   0.00000
## 6 58.37006 276.52670 148.7355       0       0 185.9440 91.38412  35.40295
##   Pos_07 Pos_08 Pos_09 Pos_10 Pos_11 Pos_12 Pos_13 Pos_14 Pos_15 Pos_16 Pos_17
## 1      0      0      0      0      0      0      0      0      0      0      0
## 2      0      0      0      0      0      0      0      0      0      0      0
## 3      0      0      0      0      0      0      0      0      0      0      0
## 4      0      0      0      0      0      0      0      0      0      0      0
## 5      0      0      0      0      0      0      0      0      0      0      0
## 6      0      0      0      0      0      0      0      0      0      0      0
##     Pos_18 Pos_19 Pos_20   Pos_21 Pos_22 Pos_23 Pos_24 Pos_25 Pos_26   Pos_27
## 1  0.00000      0      0  0.00000      0      0      0      0      0  0.00000
## 2  0.00000      0      0  0.00000      0      0      0      0      0  0.00000
## 3 12.38528      0      0 14.05922      0      0      0      0      0 16.32809
## 4  0.00000      0      0  0.00000      0      0      0      0      0  0.00000
## 5  0.00000      0      0  0.00000      0      0      0      0      0  0.00000
## 6  0.00000      0      0  0.00000      0      0      0      0      0  0.00000
##   Pos_28 Pos_29   Pos_30 Pos_31 Pos_32 Pos_33 Pos_34 Pos_35
## 1      0      0  0.00000      0      0      0      0      0
## 2      0      0  0.00000      0      0      0      0      0
## 3      0      0 17.55408      0      0      0      0      0
## 4      0      0  0.00000      0      0      0      0      0
## 5      0      0  0.00000      0      0      0      0      0
## 6      0      0  0.00000      0      0      0      0      0
hist(colMeans(posdat))

vioplot(colMeans(posdat))

rm <- rowMeans(posdat)
maxrow <- names(head(rm[order(-rm)],1))
maxrow
## [1] "6632"
posnorm <- posdat/posdat[maxrow,]*1000000

head(posnorm)
##     Pos_01    Pos_02    Pos_03 Pos_03A Pos_03B    Pos_04   Pos_05   Pos_06
## 1 0.000000  0.000000  0.000000       0       0  0.000000 0.000000 0.000000
## 2 0.000000  0.000000  0.000000       0       0  0.000000 0.000000 0.000000
## 3 0.000000  5.378085 14.224950       0       0  8.855912 4.073556 8.754047
## 4 0.000000  0.000000  0.000000       0       0  0.000000 0.000000 0.000000
## 5 0.000000  0.000000  0.000000       0       0  0.000000 0.000000 0.000000
## 6 6.319444 18.546815  5.136297       0       0 18.944965 5.503519 1.198328
##   Pos_07 Pos_08 Pos_09 Pos_10 Pos_11 Pos_12 Pos_13 Pos_14 Pos_15 Pos_16 Pos_17
## 1      0      0      0      0      0      0      0      0      0      0      0
## 2      0      0      0      0      0      0      0      0      0      0      0
## 3      0      0      0      0      0      0      0      0      0      0      0
## 4      0      0      0      0      0      0      0      0      0      0      0
## 5      0      0      0      0      0      0      0      0      0      0      0
## 6      0      0      0      0      0      0      0      0      0      0      0
##      Pos_18 Pos_19 Pos_20    Pos_21 Pos_22 Pos_23 Pos_24 Pos_25 Pos_26
## 1 0.0000000      0      0 0.0000000      0      0      0      0      0
## 2 0.0000000      0      0 0.0000000      0      0      0      0      0
## 3 0.9070674      0      0 0.4758799      0      0      0      0      0
## 4 0.0000000      0      0 0.0000000      0      0      0      0      0
## 5 0.0000000      0      0 0.0000000      0      0      0      0      0
## 6 0.0000000      0      0 0.0000000      0      0      0      0      0
##      Pos_27 Pos_28 Pos_29    Pos_30 Pos_31 Pos_32 Pos_33 Pos_34 Pos_35
## 1 0.0000000      0      0 0.0000000      0      0      0      0      0
## 2 0.0000000      0      0 0.0000000      0      0      0      0      0
## 3 0.9302748      0      0 0.9268194      0      0      0      0      0
## 4 0.0000000      0      0 0.0000000      0      0      0      0      0
## 5 0.0000000      0      0 0.0000000      0      0      0      0      0
## 6 0.0000000      0      0 0.0000000      0      0      0      0      0
hist(colMeans(posnorm))

vioplot(colMeans(posnorm))

negdat <- t(neg[9:nrow(neg),5:ncol(neg)])
negdat <- apply(X = negdat, MARGIN = 2, FUN = as.numeric)
head(negdat)
##            [,1]       [,2]       [,3]      [,4]      [,5]       [,6]       [,7]
## [1,] 101576.300 102119.200 101869.300 94116.890 69494.150 105796.400 107748.500
## [2,]  27809.580  27498.720  26338.100 23716.240 18866.910  23631.170  23369.630
## [3,]   9094.959   8814.040   8344.900  7559.509  3723.196   7498.027   7432.521
## [4,]   9356.177   9249.636   8665.360  8038.216  4112.477   7754.904   7749.492
## [5,]   3857.848   3750.044   3888.497  3085.333  2093.860   3216.274   3607.846
## [6,]   3896.218   3860.125   2783.736  2287.913  1882.221   2165.419   2974.093
##            [,8]       [,9]      [,10]     [,11]     [,12]     [,13]     [,14]
## [1,] 106596.700 109277.700 102275.100 92658.860 87503.850 76895.540 78296.790
## [2,]  22702.680  23639.410  22498.800 21625.010 19329.310 18746.780 19416.270
## [3,]   6710.270   6615.157   6115.362  5917.347  5531.769  4868.444  5346.185
## [4,]   6984.642   7383.241   6613.654  6193.886  5793.609  5577.081  5600.455
## [5,]   3192.746   3307.532   3052.538  3249.977  2725.832  2520.426  2805.349
## [6,]   3218.471   3102.704   3248.260  2777.375  3198.914  2430.608  2828.839
##           [,15]     [,16]     [,17]     [,18]     [,19]
## [1,] 108952.800 80861.570 98471.870 93960.720 75238.170
## [2,]  27125.330 21326.440 24282.830 22749.710 19387.210
## [3,]   6975.217  4277.369  6827.775  6707.019  5020.700
## [4,]   7841.949  5221.655  7620.813  6829.957  5604.821
## [5,]   3425.293  2977.733  3752.636  2662.966  2542.287
## [6,]   3611.767  2615.358  2931.984  4240.105  2568.251
dim(negdat)
## [1] 4897   19
neg_row_info <- neg[9:nrow(neg),1:4]
colnames(neg_row_info) <- c("num","run","ID","group")
neg_row_info
## # A tibble: 19 × 4
##    num   run                                  ID          group      
##    <chr> <chr>                                <chr>       <chr>      
##  1 1     20_Sep11 Seasol Marker Screen Neg_05 Seasol      Group 1    
##  2 2     20_Sep11 Seasol Marker Screen Neg_06 Seasol      Group 1    
##  3 3     20_Sep11 Seasol Marker Screen Neg_07 Seasol      Group 1    
##  4 4     20_Sep11 Seasol Marker Screen Neg_09 Seasol      Group 1    
##  5 5     20_Sep11 Seasol Marker Screen Neg_11 Seasol      Group 1    
##  6 6     20_Sep11 Seasol Marker Screen Neg_12 Seasol      Group 1    
##  7 7     20_Sep11 Seasol Marker Screen Neg_13 Seasol      Group 1    
##  8 8     20_Sep11 Seasol Marker Screen Neg_16 Seasol      Group 1    
##  9 9     20_Sep11 Seasol Marker Screen Neg_19 Seasol      Group 1    
## 10 10    20_Sep11 Seasol Marker Screen Neg_22 Seasol      Group 1    
## 11 11    20_Sep11 Seasol Marker Screen Neg_23 Seasol      Group 1    
## 12 12    20_Sep11 Seasol Marker Screen Neg_25 Seasol N2   Group 1    
## 13 13    20_Sep11 Seasol Marker Screen Neg_26 Seasol EX   Group 1    
## 14 14    20_Sep11 Seasol Marker Screen Neg_27 Seasol EX   Group 1    
## 15 15    20_Sep11 Seasol Marker Screen Neg_28 Competitors Competitors
## 16 16    20_Sep11 Seasol Marker Screen Neg_29 Competitors Competitors
## 17 17    20_Sep11 Seasol Marker Screen Neg_30 Competitors Competitors
## 18 18    20_Sep11 Seasol Marker Screen Neg_31 Competitors Competitors
## 19 19    20_Sep11 Seasol Marker Screen Neg_33 Competitors Competitors
dim(neg_row_info)
## [1] 19  4
strsplit(neg_row_info$run," ")
## [[1]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_05"  
## 
## [[2]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_06"  
## 
## [[3]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_07"  
## 
## [[4]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_09"  
## 
## [[5]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_11"  
## 
## [[6]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_12"  
## 
## [[7]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_13"  
## 
## [[8]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_16"  
## 
## [[9]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_19"  
## 
## [[10]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_22"  
## 
## [[11]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_23"  
## 
## [[12]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_25"  
## 
## [[13]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_26"  
## 
## [[14]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_27"  
## 
## [[15]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_28"  
## 
## [[16]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_29"  
## 
## [[17]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_30"  
## 
## [[18]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_31"  
## 
## [[19]]
## [1] "20_Sep11" "Seasol"   "Marker"   "Screen"   "Neg_33"
colnames(negdat) <- sapply(strsplit(neg_row_info$run," "),"[[",5)
rownames(negdat) <-1:nrow(negdat)
head(negdat)
##       Neg_05     Neg_06     Neg_07    Neg_09    Neg_11     Neg_12     Neg_13
## 1 101576.300 102119.200 101869.300 94116.890 69494.150 105796.400 107748.500
## 2  27809.580  27498.720  26338.100 23716.240 18866.910  23631.170  23369.630
## 3   9094.959   8814.040   8344.900  7559.509  3723.196   7498.027   7432.521
## 4   9356.177   9249.636   8665.360  8038.216  4112.477   7754.904   7749.492
## 5   3857.848   3750.044   3888.497  3085.333  2093.860   3216.274   3607.846
## 6   3896.218   3860.125   2783.736  2287.913  1882.221   2165.419   2974.093
##       Neg_16     Neg_19     Neg_22    Neg_23    Neg_25    Neg_26    Neg_27
## 1 106596.700 109277.700 102275.100 92658.860 87503.850 76895.540 78296.790
## 2  22702.680  23639.410  22498.800 21625.010 19329.310 18746.780 19416.270
## 3   6710.270   6615.157   6115.362  5917.347  5531.769  4868.444  5346.185
## 4   6984.642   7383.241   6613.654  6193.886  5793.609  5577.081  5600.455
## 5   3192.746   3307.532   3052.538  3249.977  2725.832  2520.426  2805.349
## 6   3218.471   3102.704   3248.260  2777.375  3198.914  2430.608  2828.839
##       Neg_28    Neg_29    Neg_30    Neg_31    Neg_33
## 1 108952.800 80861.570 98471.870 93960.720 75238.170
## 2  27125.330 21326.440 24282.830 22749.710 19387.210
## 3   6975.217  4277.369  6827.775  6707.019  5020.700
## 4   7841.949  5221.655  7620.813  6829.957  5604.821
## 5   3425.293  2977.733  3752.636  2662.966  2542.287
## 6   3611.767  2615.358  2931.984  4240.105  2568.251
hist(colMeans(negdat))

vioplot(colMeans(negdat))

rm <- rowMeans(negdat)
maxrow <- names(head(rm[order(-rm)],1))
maxrow
## [1] "4107"
negnorm <- negdat/negdat[maxrow,]*1000000

head(negnorm)
##      Neg_05    Neg_06     Neg_07     Neg_09     Neg_11     Neg_12    Neg_13
## 1 33696.462 22370.327 32732.2894 30070.6774 19994.4212 36868.3938 34447.619
## 2  9338.498  5526.954  8561.1264  8147.4300  6258.8233  5176.6661  7509.048
## 3  3091.296  1961.826  2824.5495  2663.5790  1250.2547  1507.0248  2415.920
## 4  3318.996  2150.669  2989.4695  2720.6955  1397.7947  1726.0841  2623.018
## 5  1232.596  1078.939  1355.0805   986.3931   742.7727   747.8283  1244.674
## 6  1338.499  1280.540   609.8078   735.1443   601.3762   623.0208  1036.425
##      Neg_16    Neg_19     Neg_22     Neg_23     Neg_25     Neg_26     Neg_27
## 1 37813.952 25408.579 35283.9688 31362.2506 29741.7881 17115.3851 26501.5952
## 2  7253.586  6801.383  7840.4806  6913.6007  6856.8502  4358.8861  6698.4346
## 3  2305.233  2194.482  1339.6369  1901.3414  1767.4197  1400.7182  1863.0620
## 4  2461.026  2479.303  1329.2751  2013.3055  1990.3249  1850.1156  1226.8409
## 5  1080.649  1124.201   679.4329  1100.0397   960.4419   846.3628   563.8457
## 6  1028.958  1100.649   755.2655   958.1688  1082.7366   826.1423   629.6421
##      Neg_28     Neg_29     Neg_30     Neg_31     Neg_33
## 1 38389.318 27153.4344 19791.8131 30541.6717 25847.1716
## 2  9181.112  7248.6692  5404.8647  7700.2340  6831.0477
## 3  2230.004  1517.3474  1587.5523  2313.8599  1699.3567
## 4  2519.748  1668.3371  2192.6125  2380.1334  1791.8833
## 5  1113.382  1022.9645  1244.8825   583.3518   816.8788
## 6  1222.497   921.5166   984.5645   852.2166   834.8029
hist(colMeans(negnorm))

vioplot(colMeans(negnorm))

MDS plot

First with the Pos dataset.

mds <- cmdscale(dist(t(posnorm)))
str(mds)
##  num [1:37, 1:2] -581044 -27881 -389026 -594704 -915495 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : chr [1:37] "Pos_01" "Pos_02" "Pos_03" "Pos_03A" ...
##   ..$ : NULL
plot(mds*1.1, xlab="Coordinate 1", ylab="Coordinate 2", type = "n", bty="n",main="Pos")
text(mds, labels=rownames(mds)) 

heatmap.2(cor(posnorm,method = "pearson"),scale="none",trace="none",
          cexRow = 0.7,cexCol = 0.7 , main="Pos data Pearson correlaton")

heatmap.2(cor(posnorm,method= "spearman"),scale="none",trace="none",
          cexRow = 0.7,cexCol = 0.7 , main="Pos data Spearman correlaton")

Now with the Neg dataset. Samples Neg05 to Neg23 are Seasol. Neg25 is Seasol N2. Neg26 and Neg27 are Seasol EX. Neg28 to Neg33 are competitors.

mds <- cmdscale(dist(t(negnorm)))
str(mds)
##  num [1:19, 1:2] -291911 -419693 -233020 -270324 -207792 ...
##  - attr(*, "dimnames")=List of 2
##   ..$ : chr [1:19] "Neg_05" "Neg_06" "Neg_07" "Neg_09" ...
##   ..$ : NULL
plot(mds*1.1, xlab="Coordinate 1", ylab="Coordinate 2", type = "n", bty="n",main="Neg")
text(mds, labels=rownames(mds)) 

heatmap.2(cor(negnorm,method = "pearson"),scale="none",trace="none",
          cexRow = 0.7,cexCol = 0.7 , main="Neg data Pearson correlaton")

heatmap.2(cor(negnorm,method= "spearman"),scale="none",trace="none",
          cexRow = 0.7,cexCol = 0.7 , main="Neg data Spearman correlaton")

Session information

For reproducibility.

sessionInfo()
## R version 4.1.1 (2021-08-10)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.3 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
## 
## locale:
##  [1] LC_CTYPE=en_AU.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_AU.UTF-8        LC_COLLATE=en_AU.UTF-8    
##  [5] LC_MONETARY=en_AU.UTF-8    LC_MESSAGES=en_AU.UTF-8   
##  [7] LC_PAPER=en_AU.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_AU.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] gplots_3.1.1  vioplot_0.3.7 zoo_1.8-9     sm_2.2-5.7    readxl_1.3.1 
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_1.0.7         highr_0.9          cellranger_1.1.0   bslib_0.3.0       
##  [5] compiler_4.1.1     pillar_1.6.2       jquerylib_0.1.4    bitops_1.0-7      
##  [9] tools_4.1.1        digest_0.6.27      jsonlite_1.7.2     evaluate_0.14     
## [13] tibble_3.1.4       lifecycle_1.0.0    lattice_0.20-45    pkgconfig_2.0.3   
## [17] rlang_0.4.11       rstudioapi_0.13    cli_3.0.1          yaml_2.2.1        
## [21] xfun_0.26          fastmap_1.1.0      stringr_1.4.0      knitr_1.34        
## [25] sass_0.4.0         vctrs_0.3.8        gtools_3.9.2       caTools_1.18.2    
## [29] grid_4.1.1         R6_2.5.1           fansi_0.5.0        rmarkdown_2.11    
## [33] magrittr_2.0.1     htmltools_0.5.2    ellipsis_0.3.2     KernSmooth_2.23-20
## [37] utf8_1.2.2         stringi_1.7.4      crayon_1.4.1