R for MATLAB users
Help
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| help.start() | doc help -i % browse with Info | Browse help interactively |
| help() | help help or doc doc | Help on using help |
| help(plot) or ?plot | help plot | Help for a function |
| help(package='splines') | help splines or doc splines | Help for a toolbox/library package |
| demo() | demo | Demonstration examples |
| example(plot) | Example using a function |
Searching available documentation
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| help.search('plot') | lookfor plot | Search help files |
| apropos('plot') | Find objects by partial name | |
| library() | help | List available packages |
| find(plot) | which plot | Locate functions |
| methods(plot) | List available methods for a function |
Using interactively
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| Rgui | octave -q | Start session |
| source('foo.R') | foo(.m) | Run code from file |
| history() | history | Command history |
| savehistory(file=".Rhistory") | diary on [..] diary off | Save command history |
| q(save='no') | exit or quit | End session |
Operators
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| help(Syntax) | help - | Help on operator syntax |
Arithmetic operators
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a<-1 b="" tt="">-1> | a=1; b=2; | Assignment; defining a number |
| a + b | a + b | Addition |
| a - b | a - b | Subtraction |
| a * b | a * b | Multiplication |
| a / b | a / b | Division |
| a ^ b | a .^ b | Power, $a^b$ |
| a %% b | rem(a,b) | Remainder |
| a %/% b | Integer division | |
| factorial(a) | factorial(a) | Factorial, $n!$ |
Relational operators
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a == b | a == b | Equal |
| a < b | a < b | Less than |
| a > b | a > b | Greater than |
| a <= b | a <= b | Less than or equal |
| a >= b | a >= b | Greater than or equal |
| a != b | a ~= b | Not Equal |
Logical operators
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a && b | a && b | Short-circuit logical AND |
| a || b | a || b | Short-circuit logical OR |
| a & b | a & b or and(a,b) | Element-wise logical AND |
| a | b | a | b or or(a,b) | Element-wise logical OR |
| xor(a, b) | xor(a, b) | Logical EXCLUSIVE OR |
| !a | ~a or not(a) ~a or !a | Logical NOT |
| any(a) | True if any element is nonzero | |
| all(a) | True if all elements are nonzero |
root and logarithm
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| sqrt(a) | sqrt(a) | Square root |
| log(a) | log(a) | Logarithm, base $e$ (natural) |
| log10(a) | log10(a) | Logarithm, base 10 |
| log2(a) | log2(a) | Logarithm, base 2 (binary) |
| exp(a) | exp(a) | Exponential function |
Round off
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| round(a) | round(a) | Round |
| ceil(a) | ceil(a) | Round up |
| floor(a) | floor(a) | Round down |
| fix(a) | Round towards zero |
Mathematical constants
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| pi | pi | $\pi=3.141592$ |
| exp(1) | exp(1) | $e=2.718281$ |
Missing values; IEEE-754 floating point status flags
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| NaN | Not a Number | |
| Inf | Infinity, $\infty$ |
Complex numbers
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| 1i | i | Imaginary unit |
| z <- 3="" i="" tt="">-> | z = 3+4i | A complex number, $3+4i$ |
| abs(3+4i) or Mod(3+4i) | abs(z) | Absolute value (modulus) |
| Re(3+4i) | real(z) | Real part |
| Im(3+4i) | imag(z) | Imaginary part |
| Arg(3+4i) | arg(z) | Argument |
| Conj(3+4i) | conj(z) | Complex conjugate |
Trigonometry
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| atan2(b,a) | atan(a,b) | Arctangent, $\arctan(b/a)$ |
Generate random numbers
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| runif(10) | rand(1,10) | Uniform distribution |
| runif(10, min=2, max=7) | 2+5*rand(1,10) | Uniform: Numbers between 2 and 7 |
| matrix(runif(36),6) | rand(6) | Uniform: 6,6 array |
| rnorm(10) | randn(1,10) | Normal distribution |
Vectors
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a <- c="" tt="">-> | a=[2 3 4 5]; | Row vector, $1 \times n$-matrix |
| adash <- c="" t="" tt="">-> | adash=[2 3 4 5]'; | Column vector, $m \times 1$-matrix |
Sequences
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| seq(10) or 1:10 | 1:10 | 1,2,3, ... ,10 |
| seq(0,length=10) | 0:9 | 0.0,1.0,2.0, ... ,9.0 |
| seq(1,10,by=3) | 1:3:10 | 1,4,7,10 |
| seq(10,1) or 10:1 | 10:-1:1 | 10,9,8, ... ,1 |
| seq(from=10,to=1,by=-3) | 10:-3:1 | 10,7,4,1 |
| seq(1,10,length=7) | linspace(1,10,7) | Linearly spaced vector of n=7 points |
| rev(a) | reverse(a) | Reverse |
| a(:) = 3 | Set all values to same scalar value |
Concatenation (vectors)
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| c(a,a) | [a a] | Concatenate two vectors |
| c(1:4,a) | [1:4 a] |
Repeating
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| rep(a,times=2) | [a a] | 1 2 3, 1 2 3 |
| rep(a,each=3) | 1 1 1, 2 2 2, 3 3 3 | |
| rep(a,a) | 1, 2 2, 3 3 3 |
Miss those elements out
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a[-1] | a(2:end) | miss the first element |
| a[-10] | a([1:9]) | miss the tenth element |
| a[-seq(1,50,3)] | miss 1,4,7, ... | |
| a(end) | last element | |
| a(end-1:end) | last two elements |
Maximum and minimum
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| pmax(a,b) | max(a,b) | pairwise max |
| max(a,b) | max([a b]) | max of all values in two vectors |
| v <- a="" i="" max="" tt="" which.max="">-> | [v,i] = max(a) |
Vector multiplication
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a*a | a.*a | Multiply two vectors |
| dot(u,v) | Vector dot product, $u \cdot v$ |
Matrices
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| rbind(c(2,3),c(4,5)) array(c(2,3,4,5), dim=c(2,2)) | a = [2 3;4 5] | Define a matrix |
Concatenation (matrices); rbind and cbind
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| rbind(a,b) | [a ; b] | Bind rows |
| cbind(a,b) | [a , b] | Bind columns |
| [a(:), b(:)] | Concatenate matrices into one vector | |
| rbind(1:4,1:4) | [1:4 ; 1:4] | Bind rows (from vectors) |
| cbind(1:4,1:4) | [1:4 ; 1:4]' | Bind columns (from vectors) |
Array creation
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| matrix(0,3,5) or array(0,c(3,5)) | zeros(3,5) | 0 filled array |
| matrix(1,3,5) or array(1,c(3,5)) | ones(3,5) | 1 filled array |
| matrix(9,3,5) or array(9,c(3,5)) | ones(3,5)*9 | Any number filled array |
| diag(1,3) | eye(3) | Identity matrix |
| diag(c(4,5,6)) | diag([4 5 6]) | Diagonal |
| magic(3) | Magic squares; Lo Shu |
Reshape and flatten matrices
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| matrix(1:6,nrow=3,byrow=T) | reshape(1:6,3,2)'; | Reshaping (rows first) |
| matrix(1:6,nrow=2) array(1:6,c(2,3)) | reshape(1:6,2,3); | Reshaping (columns first) |
| as.vector(t(a)) | a'(:) | Flatten to vector (by rows, like comics) |
| as.vector(a) | a(:) | Flatten to vector (by columns) |
| a[row(a) <= col(a)] | vech(a) | Flatten upper triangle (by columns) |
Shared data (slicing)
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| b = a | b = a | Copy of a |
Indexing and accessing elements (Python: slicing)
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a <- 12="" 13="" 14="" c="" rbind="" tt=""> c(21, 22, 23, 24), c(31, 32, 33, 34))-> | a = [ 11 12 13 14 ... 21 22 23 24 ... 31 32 33 34 ] | Input is a 3,4 array |
| a[2,3] | a(2,3) | Element 2,3 (row,col) |
| a[1,] | a(1,:) | First row |
| a[,1] | a(:,1) | First column |
| a([1 3],[1 4]); | Array as indices | |
| a[-1,] | a(2:end,:) | All, except first row |
| a(end-1:end,:) | Last two rows | |
| a(1:2:end,:) | Strides: Every other row | |
| a[-2,-3] | All, except row,column (2,3) | |
| a[,-2] | a(:,[1 3 4]) | Remove one column |
Assignment
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a[,1] <- 99="" tt="">-> | a(:,1) = 99 | |
| a[,1] <- c="" tt="">-> | a(:,1) = [99 98 97]' | |
| a[a>90] <- 90="" tt="">-> | a(a>90) = 90; | Clipping: Replace all elements over 90 |
Transpose and inverse
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| t(a) | a' | Transpose |
| a.' or transpose(a) | Non-conjugate transpose | |
| det(a) | det(a) | Determinant |
| solve(a) | inv(a) | Inverse |
| ginv(a) | pinv(a) | Pseudo-inverse |
| norm(a) | Norms | |
| eigen(a)$values | eig(a) | Eigenvalues |
| svd(a)$d | svd(a) | Singular values |
| chol(a) | Cholesky factorization | |
| eigen(a)$vectors | [v,l] = eig(a) | Eigenvectors |
| rank(a) | rank(a) | Rank |
Sum
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| apply(a,2,sum) | sum(a) | Sum of each column |
| apply(a,1,sum) | sum(a') | Sum of each row |
| sum(a) | sum(sum(a)) | Sum of all elements |
| apply(a,2,cumsum) | cumsum(a) | Cumulative sum (columns) |
Sorting
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a = [ 4 3 2 ; 2 8 6 ; 1 4 7 ] | Example data | |
| t(sort(a)) | sort(a(:)) | Flat and sorted |
| apply(a,2,sort) | sort(a) | Sort each column |
| t(apply(a,1,sort)) | sort(a')' | Sort each row |
| sortrows(a,1) | Sort rows (by first row) | |
| order(a) | Sort, return indices |
Maximum and minimum
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| apply(a,2,max) | max(a) | max in each column |
| apply(a,1,max) | max(a') | max in each row |
| max(a) | max(max(a)) | max in array |
| i <- a="" apply="" tt="" which.max="">-> | [v i] = max(a) | return indices, i |
| pmax(b,c) | max(b,c) | pairwise max |
| apply(a,2,cummax) | cummax(a) |
Matrix manipulation
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a[,4:1] | fliplr(a) | Flip left-right |
| a[3:1,] | flipud(a) | Flip up-down |
| rot90(a) | Rotate 90 degrees | |
| kronecker(matrix(1,2,3),a) | repmat(a,2,3) kron(ones(2,3),a) | Repeat matrix: [ a a a ; a a a ] |
| a[lower.tri(a)] <- 0="" tt="">-> | triu(a) | Triangular, upper |
| a[upper.tri(a)] <- 0="" tt="">-> | tril(a) | Triangular, lower |
Equivalents to "size"
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| dim(a) | size(a) | Matrix dimensions |
| ncol(a) | size(a,2) or length(a) | Number of columns |
| prod(dim(a)) | length(a(:)) | Number of elements |
| ndims(a) | Number of dimensions | |
| object.size(a) | Number of bytes used in memory |
Matrix- and elementwise- multiplication
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a * b | a .* b | Elementwise operations |
| a %*% b | a * b | Matrix product (dot product) |
| outer(a,b) or a %o% b | Outer product | |
| crossprod(a,b) or t(a) %*% b | Cross product | |
| kronecker(a,b) | kron(a,b) | Kronecker product |
| a / b | Matrix division, $b{\cdot}a^{-1}$ | |
| solve(a,b) | a \ b | Left matrix division, $b^{-1}{\cdot}a$ \newline (solve linear equations) |
Find; conditional indexing
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| which(a != 0) | find(a) | Non-zero elements, indices |
| which(a != 0, arr.ind=T) | [i j] = find(a) | Non-zero elements, array indices |
| ij <- 0="" a="" arr.ind="T);" ij="" tt="" v="" which="">-> | [i j v] = find(a) | Vector of non-zero values |
| which(a>5.5) | find(a>5.5) | Condition, indices |
| ij <- a="" which="">5.5, arr.ind=T); v <- a="" ij="" tt="">->-> | Return values | |
| a .* (a>5.5) | Zero out elements above 5.5 |
Multi-way arrays
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a = cat(3, [1 2; 1 2],[3 4; 3 4]); | Define a 3-way array | |
| a(1,:,:) |
File input and output
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| f <- data.txt="" read.table="" tt="">-> | f = load('data.txt') | Reading from a file (2d) |
| f <- data.txt="" read.table="" tt="">-> | f = load('data.txt') | Reading from a file (2d) |
| f <- file="data.csv" read.table="" sep=";" tt="">-> | x = dlmread('data.csv', ';') | Reading fram a CSV file (2d) |
| write(f,file="data.txt") | save -ascii data.txt f | Writing to a file (2d) |
Plotting
Basic x-y plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| plot(a, type="l") | plot(a) | 1d line plot |
| plot(x[,1],x[,2]) | plot(x(:,1),x(:,2),'o') | 2d scatter plot |
| plot(x1,y1, x2,y2) | Two graphs in one plot | |
| plot(x1,y1) matplot(x2,y2,add=T) | plot(x1,y1) hold on plot(x2,y2) | Overplotting: Add new plots to current |
| subplot(211) | subplots | |
| plot(x,y,type="b",col="red") | plot(x,y,'ro-') | Plotting symbols and color |
Axes and titles
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| grid() | grid on | Turn on grid lines |
| plot(c(1:10,10:1), asp=1) | axis equal axis('equal') replot | 1:1 aspect ratio |
| plot(x,y, xlim=c(0,10), ylim=c(0,5)) | axis([ 0 10 0 5 ]) | Set axes manually |
| plot(1:10, main="title", xlab="x-axis", ylab="y-axis") | title('title') xlabel('x-axis') ylabel('y-axis') | Axis labels and titles |
Log plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| plot(x,y, log="y") | semilogy(a) | logarithmic y-axis |
| plot(x,y, log="x") | semilogx(a) | logarithmic x-axis |
| plot(x,y, log="xy") | loglog(a) | logarithmic x and y axes |
Filled plots and bar plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| plot(t,s, type="n", xlab="", ylab="") polygon(t,s, col="lightblue") polygon(t,c, col="lightgreen") | fill(t,s,'b', t,c,'g') % fill has a bug? | Filled plot |
| stem(x[,3]) | Stem-and-Leaf plot |
Functions
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| f <- -="" cos="" function="" sin="" tt="" x="">-> | f = inline('sin(x/3) - cos(x/5)') | Defining functions |
| plot(f, xlim=c(0,40), type='p') | ezplot(f,[0,40]) fplot('sin(x/3) - cos(x/5)',[0,40]) % no ezplot | Plot a function for given range |
Polar plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| theta = 0:.001:2*pi; r = sin(2*theta); | ||
| polar(theta, rho) |
Histogram plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| hist(rnorm(1000)) | hist(randn(1000,1)) | |
| hist(rnorm(1000), breaks= -4:4) | hist(randn(1000,1), -4:4) | |
| hist(rnorm(1000), breaks=c(seq(-5,0,0.25), seq(0.5,5,0.5)), freq=F) | ||
| plot(apply(a,1,sort),type="l") | plot(sort(a)) |
3d data
Contour and image plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| contour(z) | contour(z) | Contour plot |
| filled.contour(x,y,z, nlevels=7, color=gray.colors) | contourf(z); colormap(gray) | Filled contour plot |
| image(z, col=gray.colors(256)) | image(z) colormap(gray) | Plot image data |
| quiver() | Direction field vectors |
Perspective plots of surfaces over the x-y plane
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| f <- exp="" function="" tt="" x="" y=""> n <- length="40)</tt" seq=""> z <- f="" n="" outer="" tt="">->->-> | n=-2:.1:2; [x,y] = meshgrid(n,n); z=x.*exp(-x.^2-y.^2); | |
| persp(x,y,z, theta=30, phi=30, expand=0.6, ticktype='detailed') | mesh(z) | Mesh plot |
| persp(x,y,z, theta=30, phi=30, expand=0.6, col='lightblue', shade=0.75, ltheta=120, ticktype='detailed') | surf(x,y,z) or surfl(x,y,z) % no surfl() | Surface plot |
Scatter (cloud) plots
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| cloud(z~x*y) | plot3(x,y,z,'k+') | 3d scatter plot |
Save plot to a graphics file
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| postscript(file="foo.eps") plot(1:10) dev.off() | plot(1:10) print -depsc2 foo.eps gset output "foo.eps" gset terminal postscript eps plot(1:10) | PostScript |
| pdf(file='foo.pdf') | ||
| devSVG(file='foo.svg') | SVG (vector graphics for www) | |
| png(filename = "Rplot%03d.png" | print -dpng foo.png | PNG (raster graphics) |
Data analysis
Set membership operators
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| a <- c="" tt=""> b <- c="" tt="">->-> | a = [ 1 2 2 5 2 ]; b = [ 2 3 4 ]; | Create sets |
| unique(a) | unique(a) | Set unique |
| union(a,b) | union(a,b) | Set union |
| intersect(a,b) | intersect(a,b) | Set intersection |
| setdiff(a,b) | setdiff(a,b) | Set difference |
| setdiff(union(a,b),intersect(a,b)) | setxor(a,b) | Set exclusion |
| is.element(2,a) or 2 %in% a | ismember(2,a) | True for set member |
Statistics
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| apply(a,2,mean) | mean(a) | Average |
| apply(a,2,median) | median(a) | Median |
| apply(a,2,sd) | std(a) | Standard deviation |
| apply(a,2,var) | var(a) | Variance |
| cor(x,y) | corr(x,y) | Correlation coefficient |
| cov(x,y) | cov(x,y) | Covariance |
Interpolation and regression
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| z <- lm="" tt="" x="" y=""> plot(x,y) abline(z)-> | z = polyval(polyfit(x,y,1),x) plot(x,y,'o', x,z ,'-') | Straight line fit |
| solve(a,b) | a = x\y | Linear least squares $y = ax + b$ |
| polyfit(x,y,3) | Polynomial fit |
Non-linear methods
Polynomials, root finding
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| polyroot(c(1,-1,-1)) | roots([1 -1 -1]) | Find zeros of polynomial |
| f = inline('1/x - (x-1)') fzero(f,1) | Find a zero near $x = 1$ | |
| solve('1/x = x-1') | Solve symbolic equations | |
| polyval([1 2 1 2],1:10) | Evaluate polynomial |
Differential equations
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| diff(a) | Discrete difference function and approximate derivative | |
| Solve differential equations |
Fourier analysis
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| fft(a) | fft(a) | Fast fourier transform |
| fft(a, inverse=TRUE) | ifft(a) | Inverse fourier transform |
Symbolic algebra; calculus
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| factor() | Factorization |
Programming
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| .R | .m | Script file extension |
| # | % % or # | Comment symbol (rest of line) |
| library(RSvgDevice) | % must be in MATLABPATH % must be in LOADPATH | Import library functions |
| string <- 234="" a="" tt=""> eval(parse(text=string))-> | string='a=234'; eval(string) | Eval |
Loops
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| for(i in 1:5) print(i) | for i=1:5; disp(i); end | for-statement |
| for(i in 1:5) { print(i) print(i*2) } | for i=1:5 disp(i) disp(i*2) end | Multiline for statements |
Conditionals
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| if (1>0) a <- 100="" tt="">-> | if 1>0 a=100; end | if-statement |
| if 1>0 a=100; else a=0; end | if-else-statement | |
| ifelse(a>0,a,0) | Ternary operator (if?true:false) |
Debugging
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| .Last.value | ans | Most recent evaluated expression |
| objects() | whos or who | List variables loaded into memory |
| rm(x) | clear x or clear [all] | Clear variable $x$ from memory |
| print(a) | disp(a) |
Working directory and OS
| R/S-Plus | MATLAB/Octave | Description |
|---|---|---|
| list.files() or dir() | dir or ls | List files in directory |
| list.files(pattern="\.r$") | what | List script files in directory |
| getwd() | pwd | Displays the current working directory |
| setwd('foo') | cd foo | Change working directory |
| system("notepad") | !notepad system("notepad") | Invoke a System Command |
No comments:
Post a Comment
Thank you