# Source code explanation in R

Gold Member

## Summary:

Kindly explain the source code in R which meant for calculating stationary distribution of a transition matrix.

## Main Question or Discussion Point

Summary: Kindly explain the source code in R which meant for calculating stationary distribution of a transition matrix.

I am trying to understand the following source code meant for finding stationary distribution of a matrix:

R code:
### Stationary distribution of discrete-time Markov chain
###  (uses eigenvectors)
stationary <- function(mat)
{
x = eigen(t(mat))$vectors[,1] as.double(x/sum(x)) } I tested the following source code myself: R code: > rm(list=ls()) > > P <- matrix(c(0.66, 0.34, + 0.66, 0.34), nrow=2, ncol=2, byrow = TRUE) > > x <- eigen(t(P)) > x$values
[1] 1 0

$vectors [,1] [,2] [1,] 0.8889746 -0.7071068 [2,] 0.4579566 0.7071068 > y <- x$vectors[,1]
> y
[1] 0.8889746 0.4579566
>
looks like the command
Code:
y <- x\$vectors[,1]
is selecting the 1st column of the matrix.

Why wasn't that simply written like the following?

R code:
### Stationary distribution of discrete-time Markov chain
###  (uses eigenvectors)
stationary <- function(mat)
{
x = eigen(t(mat))
y = x[,1]
as.double(y/sum(y))
}
What was the reason for introduction of a dollar sign and vector keyword?

Last edited:

Related Programming and Computer Science News on Phys.org
jedishrfu
Mentor
My suggestion is to begin reading up on R or checking out some online tutorials

https://www.tutorialspoint.com/r/index.htm
@FactChecker suggestion in your other thread is a great technique for teasing out what these constructs mean.

There’s also the Rosetta Code website with examples of R doing various tasks. The code may or may not be the best implementation of any task but they are instructive

http://rosettacode.org/wiki/Category:R
And lastly the R reference on the eig function

https://www.rdocumentation.org/packages/pracma/versions/1.9.9/topics/eig

FactChecker
FactChecker
Gold Member
What was the reason for introduction of a dollar sign and vector keyword?
That is what the documentation of the eigen function says that it returns. (see R documentation of eigen function)
I don't think that your code will work. When you encounter an unfamiliar function, it is always good to check the documentation.

jedishrfu
Gold Member
That is what the documentation of the eigen function says that it returns. (see R documentation of eigen function)
I don't think that your code will work. When you encounter an unfamiliar function, it is always good to check the documentation.
Got it thanks.