introduction to R: learning by doing (part 1)

July 9, 2012
By

(This article was first published on geo-affine » R, and kindly contributed to R-bloggers)

Geography is often about statistics as it is the basis for fast exchange of information: providing a mean and standard deviation to the audience is often much easier then showing raw data: Learning a script language for this purpose can be a hard-ass work. But I think it is more often a need of practice. And by practice I mean typing, reading and trying out. geo-works.de has featured a little list of tutorials for MatLab. Due to my feelings about MatLab I would confront you with my own R introduction for statistical programming inspired by this one:
Type the code below into your R console to get some insight into the R syntax. If you need to install R beforehand follow this instruction

a <- 7 #a will be treated as a scalar and will get the value of 7
b <- c(1,2,3) #b is now a "c"olumn vector with three entries
e <- c(1, a, 3) #whohoo look where the "a" is coming from
f <- r(2,3,4) #nope, there are no row-vectors in R as far as I know
f <- t(c(1, a, 3)) #this could be the problem solver but this is not the same as it is a matrix...
e #will show you all entries in e
e[2]#will give you the second element from e
ls() #will show you all available variables
rm(b) # let us "r"e"m"ove the be from our workspace

As we have already created a very easy matrix lets go a little further with matrices:

A <- diag(3) #will show you the identity matrix with ones on the diagonal
A <- A * a #lets guess ...
A[3,2] <- pi # will set the third row and second column with the value of pi
X=matrix(1, nrow=3, ncol=10) # a mtrix with one as a the only value for 30 cells.
E <- diag(e) #lets create a diagonal matrix of e
#transposition of a matrix
E=t(E); #with the semi-colon we are suppressing the output of the operation

Lets get back to vectors as they are important for statistical calculations: normally a vector represents a list observations of one parameter only:

#let us do some vector creation:
for (i in c(1:10)) {
v[i] <- i*2
} #will give you a  vetcor with ten numbers ranging from 2 to 20 in steps of two
v2 <- seq(2,20,2) #will do the same sequence ;-)

Now: operating on matrices with R. keep in mind to think column wise as the splitting of the vector is done by columns first.

rm(list=ls()) #will remove everything from your workspace
A <- matrix(c(1,2,2,1,3,0), nrow=2, ncol=3)
B <- matrix(c(2,1,0,2,0,1), nrow=3, ncol=2)
C <- matrix(c(0,5,1,1,0,3), nrow=2, ncol=3)
dim(A) #will provide info about the numbers of rows and colums
dim_A <-dim(A) #is fine as well
A%*%B #multiplication
A%*%C #failure due to "misshape" matrices
A%*%t(C) #multiplication with the transpose
diag(A%*%t(C)) #will give you the values along the diagonal of the resulting matrix
D <- A+C #Matrix addition
c(2,1,3) -> x # "<-" the other way around... still "<-" is not the same as "=" as "=" is without a "direction"
g <- A*x

Try it out…

To leave a comment for the author, please follow the link and comment on his blog: geo-affine » R.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Tags: , , , , , , , , ,

Comments are closed.