---
title: "BiCG R Notebook"
output: html_notebook
---
### Getting Around
#### The Hard Way
```{r}
# get the current working directory:
getwd()
# set a new working directory:
setwd("C:/myPATH")
setwd("~/myPATH") # on Mac
setwd("/Users/david/myPATH") # on Mac
# list the files in the current working directory:
list.files()
# list objects in the current R session:
ls()
```
#### The Easy Way
In RStudio we can use "Session" > "Set Working Directory".
### Data Types
#### Vectors
```{r}
numeric.vector <- c(1,2,3,4,5,6,2,1)
numeric.vector
character.vector <- c("Fred", "Barney", "Wilma", "Betty")
character.vector
logical.vector <- c(TRUE, TRUE, FALSE, TRUE)
logical.vector
```
To refer to elements in the vector:
```{r}
character.vector
character.vector[2]
character.vector[2:3]
character.vector[c(2,4)]
```
#### Matrices
You can create a 3x4 numeric matrix with:
```{r}
matrix.example <- matrix(1:12, nrow = 3, ncol=4, byrow = FALSE)
matrix.example
matrix.example <- matrix(1:12, nrow = 3, ncol=4, byrow = TRUE)
matrix.example
```
Alternatively, you can create a matrix by combining vectors:
```{r}
dataset.a <- c(1,22,3,4,5)
dataset.b <- c(10,11,13,14,15)
dataset.a
dataset.b
rbind.together <- rbind(dataset.a, dataset.b)
rbind.together
cbind.together <- cbind(dataset.a, dataset.b)
cbind.together
```
To get elements of the matrix:
```{r}
matrix.example[2,4]
matrix.example[2,]
matrix.example[,4]
```
You can add column and row names to the matrix and use the new names to get the elements of the matrix:
```{r}
colnames(matrix.example) <- c("Sample1","Sample2","Sample3","Sample4")
rownames(matrix.example) <- paste("gene",1:3,sep="_")
matrix.example
matrix.example[,"Sample2"]
matrix.example[1,"Sample2"]
matrix.example["gene_1","Sample2"]
```
Note that all columns in a matrix must have the same mode(numeric, character, etc.) and the same length.
#### Dataframes
Dataframes are similar to arrays but different columns can have different modes (numeric, character, factor, etc.).
```{r}
people.summary <- data.frame(
age = c(30,29,25,25),
names = c("Fred", "Barney", "Wilma", "Betty"),
gender = c("m", "m", "f", "f")
)
people.summary
```
To get elements of the dataframe:
```{r}
people.summary[2,1]
people.summary[2,]
people.summary[,1]
people.summary$age
```
#### Lists
Lists gather together a collection of objects under one name.
```{r}
together.list <- list(
vector.example = dataset.a,
matrix.example = matrix.example,
data.frame.example = people.summary
)
together.list
```
There are several ways to get elements of a list:
```{r}
together.list$matrix.example
together.list$matrix.example[,3]
together.list["matrix.example"]
together.list[["matrix.example"]]
together.list[["matrix.example"]][,2]
```
### Reading Data In
We use `read.data` or `read.csv` to read in data.
```{r}
gene_example <- read_csv("Gene_R_example.csv")
```
In RStudio, we can use the "File" navigation window instead. Navigate to the directory containing the Gene_R_example.csv that we downloaded previously. Click on the file name then click "Import Dataset." A new window appears allowing you to modify attributes of your file. Rename the file to the object "gene_example".
Commands like `head` and `tail` also work in R.
```{r}
head(gene_example)
View(gene_example)
```
### Basic Plotting
A very basic plot:
```{r}
plot(x=gene_example$Control, y=gene_example$Treated)
```
A nicer plot:
```{r}
plot(x=gene_example$Control, y=gene_example$Treated,
xlab = "Control",
ylab = "Treated",
cex.lab = 1.5,
main = "A nice scatter plot",
pch = 16,
bty = "n",
col = "dark blue",
las = 1
)
## las
## How to change the axes label style in R
## To change the axes label style, use the graphics option las (label style). This changes the orientation angle of the labels:
## 0: The default, parallel to the axis
## 1: Always horizontal
## 2: Perpendicular to the axis
## 3: Always vertical
## bty
## To change the type of box round the plot area, use the option bty (box type):
## "o": The default value draws a complete rectangle around the plot.
## "n": Draws nothing around the plot.
```
Connecting the dots:
```{r}
plot(x=gene_example$Control, y=gene_example$Treated,
xlab = "Control",
ylab = "Treated",
cex.lab = 1.5,
main = "A nice scatter plot",
pch = 16,
bty = "n",
col = "dark blue",
type = "b",
las = 1
)
```
#### Histograms
```{r}
hist(gene_example$Control)
hist(gene_example$Control,
xlab = "Expression",
ylab = "Number of Genes",
cex.lab = 1.5,
main = "A nice histogram",
col = "cyan",
breaks = 10,
las = 1
)
```
#### Boxplots
```{r}
boxplot(gene_example[,2:3])
```
```{r}
boxplot(gene_example[,2:3],
width = c(3,1),
col = "red",
border = "dark blue",
names = c("Control", "Treatment"),
main = "My boxplot",
notch = TRUE,
horizontal = TRUE
)
```
#### Saving your plots as PDFs
```{r}
pdf("myfigure.pdf", height=10, width=6)
par(mfrow=c(2,1))
plot(x=gene_example$Control, y=gene_example$Treated,
xlab = "Control",
ylab = "Treated",
cex.lab = 1.5,
main = "A nice scatter plot",
pch = 16,
bty = "n",
col = "dark blue",
type = "b",
las = 1
)
boxplot(gene_example[,2:3],
width = c(3,1),
col = "red",
border = "dark blue",
names = c("Control", "Treatment"),
main = "My boxplot",
notch = TRUE,
horizontal = TRUE
)
dev.off()
```