User Tools

Site Tools


documents:111012rtricks

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
documents:111012rtricks [2012/07/11 08:10]
127.0.0.1 external edit
documents:111012rtricks [2016/05/24 05:46] (current)
Line 1: Line 1:
 +====== R Tricks ======
  
 +===== removing trailing zeros from a vector =====
 +
 +When you import data from the out put of other software, you might have trailing 0s at the end of each column:
 +<​code>​
 +> d0
 + [1] 69.444 70.889 86.667 95.667 83.444 78.333 67.889
 + [8] 56.000 49.222 40.333 37.889 31.889 30.333 26.667
 +[15] 22.444 23.111 20.889 22.000 20.111 19.778 20.778
 +[22] 19.667 17.333 19.333 19.000 16.333 14.444 13.889
 +[29] 18.000 21.778 23.556 23.889 28.778 40.000 48.667
 +[36] 55.889 66.667 78.889 72.222 84.778 68.778 69.444
 +[43]  0.000  0.000  0.000  0.000  0.000  0.000  0.000
 +[50]  0.000  0.000  0.000  0.000  0.000  0.000  0.000
 +[57]  0.000  0.000  0.000  0.000  0.000  0.000  0.000
 +[64]  0.000  0.000  0.000  0.000
 +</​code>​
 +To remove them, there could be many ways, but here is my one liner. ​
 +<code R>
 +d0c <- d0[rev(cumsum(rev(d0)))>​0]
 +</​code>​
 +Then the output is
 +<​code>​
 +> d0c
 + [1] 69.444 70.889 86.667 95.667 83.444 78.333 67.889
 + [8] 56.000 49.222 40.333 37.889 31.889 30.333 26.667
 +[15] 22.444 23.111 20.889 22.000 20.111 19.778 20.778
 +[22] 19.667 17.333 19.333 19.000 16.333 14.444 13.889
 +[29] 18.000 21.778 23.556 23.889 28.778 40.000 48.667
 +[36] 55.889 66.667 78.889 72.222 84.778 68.778 69.444
 +</​code>​
 +
 +===== Plotting a matrix data as a color-coded image =====
 +
 +<sxh>
 +#a 2Dplot, color coded. ​
 +x <- c(1:20)
 +y <- c(1:10)
 +for(j in y){
 +  for(i in x){
 +    val <- i+j
 +    if((i == 0) & (j == 0)) z <- val    ​
 +    elsez <- append(z, val)
 +  }
 +}
 +
 +z <- matrix(z, nrow=20, ncol=10)
 +mat <- list(x, y, z)
 +image(x, y, z)
 +</​sxh>​
 +
 +[{{:​documents:​rtips:​imageplot.png| Example plotting of a matrix using base graphics function image()}}]
 +
 +... a bit faster way calculation wise uses indexing. ​
 +<sxh>
 +width <- 10
 +height <- 20
 +x <- c(1:width)
 +y <- c(1:height)
 +xindex <-rep(x, length = width*height)
 +yindex <- yindexing(x,​ y)
 +
 +z <- xindex + yindex
 +
 +z <- matrix(z, nrow=width, ncol=height)
 +mat <- list(x, y, z)
 +image(x, y, z)
 +
 +yindexing <- function (x, y) {
 +  for(i in y){
 +    cr <- rep(i, length=length(x))
 +    if (i==1) all <- cr
 +    else all <- append(all, cr)
 +  }
 +  return (all)
 +}
 +</​sxh>​
 +
 +===== Inserting math formula & symbols in label or title =====
 +
 +The easiest way is to use function //​expression()//​. For example,
 +<​code>​
 +plot(back$V2,​ type='​l',​ xlab=expression(slice %.% time), ylab='​intensity',​ xaxt="​n",​ yaxt="​n"​)
 +</​code>​
 +Inserts vertically centered dot in the x label between "​slice"​ and "​time"​. You could check other available expressions by
 +<​code>​
 +?plotmath
 +</​code> ​
 +
 +More recent, but under development is using [[http://​cran.r-project.org/​web/​packages/​tikzDevice/​|tikzDevice]].
 +
 +===== Variable Name to String =====
 +
 +<​code>​
 +myfunc <- function(v1) {
 +  deparse(substitute(v1))
 +}
 +
 +myfunc(foo)
 +[1] "​foo"​
 +</​code>​
documents/111012rtricks.txt ยท Last modified: 2016/05/24 05:46 (external edit)