Basic Functions:
In R, # can be used for putting comment in a script. (R ignores everything after # in a command line)
As a first step, you may set the current working directory.
#Examples:
setwd("d:/test")
setwd("/home/naimi/test")
getwd()# returns the current directory
Following functions show how R can be used as a calculator and how different operators including addition (+), subtraction (-), multiplication (*), division (/), exponentiation (^ or **), modulus (%%), integer division (%/%) can be used:
# R as calculator:
2*2
3*(1.4+12.2) /1.5
5^2
10 %% 3
10 %/% 3
pi
sqrt(25)
abs(-5)
log(2)# natural logarithm
log10(2)# common logarithm
exp(3)# e ^ 3
round(3.431)
round (3. 631 )
round (3. 431 , 1 )
sin(0. 5 )
cos(0. 5 )
sin( 0. 5 )/ cos(0.5)
tan
Data types:
R supports different types of data objects (variables). Basic data types are:
vector, matrix, data.frame, factor, and list:
‘vector’ is the most basic data object. vactor stores a set of elements with the same type together in a vector (for example a set of numbers like 1,2,3,4). Assigning a single number to an object (e.g. x <- 12), will give you a vector containing single element. All objects have a mode and length. The mode determines the kind of data type (i.e. numeric, character, logical, complex). Length of an object is the number of elements in it, and can be obtained using length() function.
Data objects may contain a special data value, NA, means missing data.
#Examples:
x1 <- 10
x1
x2 <- "Babak"
x2
mode(x2)
length(x2)# returns number of items in vector v1
x3 <- TRUE
x3
mode(x3)
v1 <- c(11,23,12,10)
v1
mode(v1)
length(v1)# returns number of items in vector v1
v2 <- c(1:10)
v2
length(v2)
v3 <- seq(1,10,by=2)
v3
v4 <- c("Babak","John")
v4
mode(v4)
v5 <- c(T,T,F,T)
v5
v1 * 2
To access a particular element in a vector, you can put its index between square brackets in front of the name of objects (for example x[3] returns the third element in the vector of x; and x[1:3] returns the first three elements in vector x).
#Examples:
x <- c(5,100,115,200)
x
x[1]# First item in vector x
x[4]# 4th item in vector x
length(x)# number of items in x
x[length(x)]# last item in x, you see here how length() is used to get last item in x
x[1:3]# First three items in x
x[c(1,4)]# 1st and 4th items in x
# --- subsetting a vector
x[-1]# returns all items in x except first item!
x[-c(1,4)] # returns all items in x except 1st and 4th items!
x <- x[-1]# permanently remove first item from x!
To handle categorical (nominal) data, R supports a specific type of data, called ‘factor’. Suppose there is a vector contains character type values (e.g. "Forest", "Agriculture"…; or "Female", "Male"), then it can be presented as factor types because it offers an easier way to handle this type of data. Factors have levels which is the possible values in the factor.
#Examples:
f <- c("Forest","Agriculture","Agriculture","Forest","Agriculture")
f
mode(f)
f <- factor(f)
f # f is a factor with two levels of Agriculture and Forest
table(f)
Data can be stored in objects with more than one dimenstion (like matrix and array).
m1 <- matrix(nrow=3,ncol=4)# a matrix with 3 rows and 4 columns
m1# returns values of the matrix m1
m1[] <- 1# assigns 1 to all elements of m1
m1
m1[1,1] <- 100# assigns 100 to element in row 1 and column 1
m1
class(m1)
dim(m1)
nrow(m1)
ncol(m1)
m1[] <- 1:12
m1
m1[2,3]# returns the value from the 2nd row and 3rd column in m1
m1[2,]# returns all values from 2nd row in m1
m1[,4]# returns all values from 4th column
m1[c(1,3),]# returns all values from 1st and 3rd rows in all columns of m1
# array is and extension of matrix with more than two dimensions
a <- array(1:18,c(3,3,2))
a[3,3,2]
m1 <- matrix(nrow=3,ncol=4)# a matrix with 3 rows and 4 columns
m1# returns values of the matrix m1
m1[] <- 1# assigns 1 to all elements of m1
m1
m1[1,1] <- 100# assigns 100 to element in row 1 and column 1
m1
class(m1)
dim(m1)
nrow(m1)
ncol(m1)
m1[] <- 1:12
m1
m2 <- matrix(c(1,1,2,2,3,3,4,4),nr=2,nc=4)
m2
m3 <- matrix(c(1,1,2,2,3,3,4,4),nr=2,nc=4,byrow=T)
m3
# what is the difference in creating of matrices m2 and m3 ?!
v1 <- c(0.1,0.5,1,2,3.5)
v2 <- seq(10,50,by=10)
v1 # v1 is a numeric vector
v2 # v2 is a numeric vector
# for combining the vectors v1 and v2 as two columns in a matrix, you can use cbind():
m4 <- cbind(v1,v2)
m4
class(m4)
rbind(m2,m3)# adding m3 rows to m2
m2 * m3 # component-wise multiplication -- Note that it is not a the usual matrix multiplication
t(m2)# transpose of matrix m2
m2 %*% t(m3)# matrix multiplication
A table form data can be stored as data.frame in R. A difference between matrix and data.frame is that in data frame, you can have columns with different types (e.g. character, numeric) but in matrix all should be the same.
c1 <- c("Bab","John","Marry")
c2 <- c("M","M","F")
c3 <- c(37,29,44)
df <- data.frame(c1,c2,c3)
df
class(df)
str(df)# structure of the object df
colnames(df)# names of columns
colnames(df) <- c("Name","Sex","Age") # changing the column names of df
df
df[,1] # first column of df
df[2,] # 2nd row of df
df$Age # the values of the column named Age in df