Chapter 2 Basic R
2.1 R as a Calculator
We can compute mathematical expressions by typing them into the console:
7 - 2*(2/5 + 3^2)
[1] -11.8R follows the basic order of operations: Parenthesis, Exponents, Multiplication, Division, Addition and Subtraction. For instance,
# compare this
9/2 + 3
[1] 7.5
# to this
9/(2 + 3)
[1] 1.82.2 Variable Assignments
Let us save the result of \(7 - 2*(2/5 + 3^2)\) to a variable
x <- 7 - 2*(2/5 + 3^2)
x
## [1] -11.8Here we defined a variable, x, and assigned the computed value to it.
The operator <- is called the assignment operator in R.2
Variable names can contain any combination of alphanumeric characters along with periods (.) and underscores (_). However, they cannot start with a number or an underscore.
It is generally considered best practice to use actual names, usually nouns, for variables instead of single letters. This provides more information to the person reading the code.
Variable names are case sensitive. For instance, weight and Weight are two different variables.
For various reasons a variable may need to be removed. This is easily done using remove or its shortcut rm:
a <- sqrt(37)
b <- a^2 + 5*a
a
## [1] 6.082763
b
## [1] 67.41381
remove(a,b) # or rm(a,b)As the example shows remove function accepts multiple arguments separated by commas.
Comments are preceded by the # symbol. Any text appearing after the # is ignored by the R interpreter.
2.3 Objects
Everything we encounter in R is considered as an object. They may contain numbers, functions, names, dimensions, etc.
General Structure:(object name) <- (information in R)
object1 <- 1 + 2
object1
## [1] 3
# another object
object2 <- "blue"
object2
## [1] "blue"2.4 Built-in Functions and Operators
Some mathematical operators and functions:
| Function | R Command | Example |
|---|---|---|
| Addition | + |
2+3=5 |
| Subtraction | - |
2-3=-1 |
| Multiplication | * |
2*3=6 |
| Division | / |
2/3=6 |
| Exponent | ^ |
2^3=8 |
| Square Root | sqrt() |
sqrt(9)=3 |
| Modulus | %% |
7%%3=1 |
| Absolute Value | abs() |
abs(-2)=2 |
| Transposition | t() |
t(A) |
| Matrix multip. | %*% |
A%*%B |
| Inversion | solve() |
solve(A) |
To see the help page for functions, for example for sqrt, use either help(sqrt) or enter ?sqrt. However, in the case of an operator like the colon used below, you must enclose the symbol in backticks like this: ?:.
These operators are vectorized, so they will apply to either single numbers or vectors with more than one number.
x <- 2:4
x
## [1] 2 3 4
sqrt(x)
## [1] 1.414214 1.732051 2.000000The functions seq() and rep() are other ways of generating sequences:
| Command | Output |
|---|---|
seq(3,10) |
3, 4, 5, 6, 7, 8, 9, 10 |
seq(3,10, by = 1.5) |
3, 4.5, 6, 7.5, 9 |
seq(3,10, length = 4) |
3, 5.3333333, 7.6666667, 10 |
seq(along.with = seq(2.5,3.5, by = 0.5)) |
1, 2, 3 |
seq_along(seq(2.5,3.5, by = 0.5)) |
1, 2, 3 |
rep(3, times = 3) |
3, 3, 3 |
rep(c(-1, pi), times = 3) |
-1, 3.1415927, -1, 3.1415927, -1, 3.1415927 |
rep(c(-1, pi), each = 3) |
-1, -1, -1, 3.1415927, 3.1415927, 3.1415927 |
2.5 Workspace and Files Management
The workspace is your current R working environment and includes any user-defined objects (vectors, matrices, functions, data frames, and lists).
The current working directory is the directory from which R will read files and to which it will save results by default. You can find out what the current working directory is by using the getwd() function and you can set the current working directory by using the setwd() function.
It is important to know how to examine your local workspace in R. Here is a list of useful commands for workspace and files management:
| Command | Description |
|---|---|
getwd() |
shows current working directory |
setwd() |
sets current working directory |
ls() |
lists all the objects in your local workspace |
dir() |
lists all the objects in your current directory |
list.files() |
lists all the objects in your current directory |
arg() |
shows arguments that a function can take |
dir.create() |
creates a directory in the current working directory |
file.create() |
creates a file in your working directory |
file.exists() |
checks if a file exists in your working directory |
file.info() |
shows information about a file |
file.rename() |
changes the name of a file |
file.remove() |
changes the name of a file |
file.copy() |
makes a copy of a file |
| Command | Description |
|---|---|
help(options) |
provides information about available options |
options() |
lets you view or set out current options |
history(30) |
displays last 30 commands (default = 25) |
savehistory("my_hist") |
saves the commands history to my_hist (default = .Rhistory) |
loadhistory("my_hist") |
reloads the commands history |
save.image("my_image") |
saves the workspace to my_image (default = .RData) |
save(my_obj, file = "im") |
saves objects in my_obj to im |
load("my_image") |
loads a workspace into the current session |
# save original options
original_options <- options()
# change after decimal digits to 2
options(digits = 2)
# try out
1/3
## [1] 0.33
#set the options to the original back
options(original_options)
1/3
## [1] 0.3333333The setwd() function won’t create a directory that doesn’t exist. If necessary, you can use the dir.create() function to create a directory and then use setwd() to change to its location.
It’s a good idea to keep your projects in separate directories. You may want to start an R session by issuing the setwd() command with the appropriate path to a project, followed by the load(".RData") command. This lets you start up where you left off in your last session and keeps both your objects and history separate between projects. On Windows and Mac OS X platforms, it’s even easier. Just navigate to the project directory and double-click the saved image file. Doing so starts R, loads the saved workspace, and sets the current working directory to this location.
2.6 Input and Output
The source("filename") function submits a script to the current session. If the filename doesn’t include a path, the file is assumed to be in the current working directory. For example, source("myscript.R") runs a set of R statements contained in the file myscript.R. By convention, script filenames end with an .R extension, but this isn’t required.
The sink("filename") function redirects output to the file filename. By default, if the file already exists, its contents are overwritten. Include the option append=TRUE to append text to the file rather than overwriting it. Including the option split=TRUE will send output to both the screen and the output file. Issuing the command sink() without options will return output to the screen alone.
Although sink() redirects text output, it has no effect on graphic output. To redirect graphic output, use one of the functions listed in table below. Use dev.off() to return output to the terminal.
| Command | Output |
|---|---|
bmp("filename.bmp") |
BMP file |
jpeg("filename.jpg") |
JPEG file |
pdf("filename.pdf") |
PDF file |
png("filename.png") |
PNG file |
postscript("filename.ps") |
PostScript file |
svg("filename.svg") |
SVG file |
win.metafile("filename.wmf") |
Windows metafile |
Assume that you have three script files containing R code (script1.R, script2.R, and script3.R). Issuing the statement
source("script1.R")
submits the R code from script1.R to the current session, and the results appear on the screen.
If you then issue the statements
sink("myoutput", append=TRUE, split=TRUE)
pdf("mygraphs.pdf")
source("script2.R")
the R code from file script2.R is submitted, and the results again appear on the screen. In addition, the text output is appended to the file myoutput, and the graphic output is saved to the file mygraphs.pdf.
Finally, if you issue the statements
sink() dev.off() source("script3.R")
the R code from script3.R is submitted, and the results appear on the screen. This time, no text or graphic output is saved to files.
2.7 Using Help
| Command | Description |
|---|---|
help.start() |
General help; manuals, packages, data import/export |
help("mean") |
Help on function mean (or ?mean) |
help.search("mean") |
Searches the help system for mean (or ??mean) |
example("mean") |
Examples of function mean |
RSiteSearch("mean") |
Searches the online help manuals and archived mailing lists for mean |
data() |
Lists all available datasets contained in currently installed packages |
vignette() |
Lists all available vignettes for currently installed packages |
vignette("AER") |
Displays the vignette for AER package |
The function help.start() opens a browser window with access to introductory and advanced manuals, FAQs, and reference materials. The RSiteSearch() function searches for a given topic in online help manuals and archives of the R-Help discussion list and returns the results in a browser window. The vignettes returned by the vignette() function are practical introductory articles provided in PDF format. Not all packages have vignettes.
Alternatively,
=can also be used but in these notes I use<-as is the convention inRcommunity.↩