Basic Operations
a1<-c(1:5)
a1 + 5
a1 - 3
a1 * 4
a1 ^ 2
a1 / 2
a1 %% 2
a2 <- a1 / 2
vector vs vector
a1 + a2 (- * /)
but:
b1<-c(1:6)
a1 + b1
does that work? why?
b2<-c(1:10)
a1 + b2
does that work? why?
using pre-defined functions
sqrt(a1)
log2(a1)
exp(a1)
sin(a1)
operations on vectors/matrices [source]
c1<-runif(20)
length(c1)
min(c1) max(c1) sum(c1)
median(c1)
mean(c1)
sd(c1)
summary(c1) // all kinds of meta info
intersect(a1,a2) // return the intersection of given vectors
union(a1,a2)
modify vectors
c2<-append(c1,24:42) // append values to a vector
c3<-append(c1,24:42,after=length(c1)/2) // at a certain index
c4<-match(24:42,c1) // find entries in each of the 2 vectors - what will this return?
c5<-match(24:42,c2) // what will be returned here?
c6<-match(24:42,c3)
combine vectors to a matrix
d1<-cbind(a1,a2) // by column
d2<-rbind(a1,a2) // by row
d3<-t(d1) // transpose of d1, same thing as d2 now
d4<-merge(a1,a2) // merge, similar to DB join
dim(d4) // get the dimension of the matrix
d5<-apply(d1,1,sum) // apply the function 'sum' to all rows of matrix d1
d6<-apply(d1,2,sum) // apply the function 'sum' to all columns of matrix d1
logic operations
e1<-c1 > 0.5 // return T or F for each index depending on condition
e2<-d1 > 1 // ditto
sorting (not so basic anymore) [source]
order function
x<-sample(1:10,20,replace=T) // 3 vectors containing 20 unsorted values each
y<-sample(1:10,20,replace=T)
z<-sample(1:10,20,replace=T)
xyz<-rbind(x,y,z) // bind to matrix
o<-order(x,y,z) // order by x, ties are broken by y and further by z; o holds indices
xyzo<-xyz[,o] // ordered matrix
sort function
x1<-sort(x)
x2<-sort(x,decreasing=T) // decreasing order
x3<-sort(x,partial=c(3,4)) // partial values are in correct position and all smaller values are to the left, all greater to the right
rank function
x4<-rank(x)
x5<-rank(x,ties="average") // ties handled as follows: rank eqs mean value
x6<-rank(x,ties="first") // first come first serve
x7<-rank(x,ties="random") // random order
x8<-rank(x,ties="min") // all ties get min rank
x9<-rank(x,ties="max") // all ties get max rank
correlation and linear regression [source]
correlation
xx<-sample(10) // 2 vectors holding values 1..10 in random order
yy<-sample(10)
xxyy1<-cor(xx,yy) // correlation value (default=pearson)
xxyy2<-cor(xx,yy,method="kendall") // kendall
xxyy3<-cor(xx,yy,method="spearman") // spearman
linear regression (least squares)
x<-c(1:70) // vector, x-axis
y<-sample(50:0,70,replace=T) // random values for y-axis
y<-y[order(-y)] // sort and reverse order
plot(x,y,pch=20) // plot dots
model<-lm(y~x) // linear regression formula y=mx+n
abline(model) // plot regression line
summary(model) // output about regression