March 27, 2015
Key shortcuts in RStudio:
| Command | Action |
|---|---|
| Alt + Shift + K | Show shortcuts |
| Ctrl + Enter | Run current line of code |
| Ctrl + R | Run all lines of code in the script |
| Tab | Autocomplete* |
shortcuts <- data.frame(Command = c(
"Alt + Shift + K",
"Ctrl + Enter",
"Ctrl + R",
"Tab"),
Action = c("Show shortcuts",
"Run current line of code",
"Run all lines of code in the script",
"Autocomplete*"))
kable(shortcuts)
There are 7,000+ 'add-on' packages to 'supercharge' R.
Easiest way to install them, from RStudio:
Tools -> Install Packages
or using keyboard shortcuts:
Alt + T ... then k
Can be installed and loaded in 6 lines of code:
pkgs <- c("devtools", "shiny", "rgdal", "rgeos", "ggmap", "raster")
install.packages(pkgs) # install the official packages!
library(devtools) # enables installation of leaflet
gh_pkgs <- c("rstudio/leaflet", "robinlovelace/stplanr")
install_github(gh_pkgs) # install packages on github
lapply(c(pkgs, "leaflet", "stplanr"), library, character.only = T)
Anything that exists in R is an object. Let's create some with the <- symbol (= does the same job, before you ask!)
vector_logical <- c(TRUE, TRUE, FALSE)
vector_character <- c("yes", "yes", "Hello!")
vector_numeric <- c(1, 3, 9.9)
class(vector_logical) # what are the other object classes?
## [1] "logical"
Use the "Environment tab" (top right in RStudio) to see these
To ask R what objects it has, we can use ls().
(Anything that happens is a function)
ls()
## [1] "pkgs" "shortcuts" "vector_character" ## [4] "vector_logical" "vector_numeric"
Now we can automate the question: what class?
obs <- ls()[grep("ve", ls())]
sapply(X = mget(obs), FUN = class)
## vector_character vector_logical vector_numeric ## "character" "logical" "numeric"
To find out what just happened, we can use R's internal help
The most commonly used help functions are:
help(apply) # get help on apply ?apply ?sapply ??apply
The *apply family of functions are R's internal for loops. What about get()
?mget
The fundamental data object in R.
Create them with data.frame()
data.frame(vector_logical, vector_character, n = vector_numeric)
## vector_logical vector_character n ## 1 TRUE yes 1.0 ## 2 TRUE yes 3.0 ## 3 FALSE Hello! 9.9
Oops - we forgot to assign that. Tap UP or Ctl-UP in the console, then enter:
df <- data.frame(vector_logical, vector_character, n = vector_numeric)
plot() is polymorphic. Try plot(df) and ?plot:
## Help on topic 'plot' was found in the following packages: ## ## Package Library ## graphics /usr/lib/R/library ## raster /usr/local/lib/R/site-library ## ## ## Using the first match ...
The [] brackets, appending the object name, subset data.
A comma separates each dimension; nothing means everything:
df[1,] # all of the the 1st line of df
## vector_logical vector_character n ## 1 TRUE yes 1
In a 2d dataset, the following selects the 3rd line in the 3rd column:
df[3,3]
## [1] 9.9
There are 4 fundamental Spatial* data types in R, enabled by the foundational spatial package sp:
SpatialPixels() SpatialPoints() SpatialLines() SpatialPolygons()
These are S4 R objects, with strictly defined slots. All such Spatial* objects have proj4string and bbox slots. Each can be extended as a Spatial*DataFrame to include data.
lnd <- shapefile("data/london_sport.shp")
class(lnd)
## [1] "SpatialPolygonsDataFrame" ## attr(,"package") ## [1] "sp"