Install and Update R
sudo apt-get install R
If we want to update R from version A to version B, then we can
sudo apt-get update sudo apt-get upgrade sudo apt-get install R
Install R Packages
(1)Enter into R environment $>R
(2)Set the working directory $>setwd("/media/chase/Elements/Zmy_projects/GoogleTimeSeriesAnlysis")
(3)We can also check where we are $>getwd()
(4)Install a package named R.matlab $>install.packages("R.matlab") //reused for reading mat file or sth else.
(5)Load the installed library $>library("R.matlab")
Basic Operations
(1)check and remove variables
ls() //check what variables in the workspace rm('A') //remove a variable named A rm(list=ls(all=TRUE)) //remove all variables
(2)set and see where we are
getwd()
setwd('/home/chase')
(3)read from a text or csv file
firstweek<-read.table('../Data/top10080_original.txt',sep=',') // read from a text file firstweek<-read.csv('../Data/top10080_original.txt') //read from a csv file
Here the variable firstweek is a matrix.
(4)matrix manipulation
firstweek[1,1] //the element at first row and forst column firstweek[,1] //the first column firstweek[1,] //the first row firstweek[1:1440, 1] // top 1440 elems of the first column firstweek[1:10, 1:20] // sub matrix whose row ranges from 1 to 10, whose col ranges from 1 to 20 firstweek[,c(1,3)]// the 1st and 3rd columns
(5)matrix and vector statistics
> firstdayfirstcol<-firstweek[1:1440,1] \\ vector with 1440 elems > length(firstweek) \\ the matrix firstweek has 33 columns [1] 33 > sum(firstdayfirstcol) [1] 97100.39 > length(firstdayfirstcol) [1] 1440 > sum(firstweek)// sum all columns and rows [1] 23232279 > colSums(firstweek) //sum each column V1 V2 V3 V4 V5 V6 688478.954 684670.075 688985.005 647922.085 643336.556 598719.240 V7 V8 V9 V10 V11 V12 438502.602 600722.034 704144.360 398789.414 577918.448 6640.911 V13 V14 V15 V16 V17 V18 4524.089 1129.896 1148.419 13561.651 313367.053 417805.373 V19 V20 V21 V22 V23 V24 95514.323 66117.268 33048.942 29394.382 33063.065 33052.713 V25 V26 V27 V28 V29 V30 2239.682 94685.033 112156.240 274774.763 15027866.000 0.000 V31 V32 V33 0.000 0.000 0.000 > rowSums(firstweek) // sum each row >colMeans(firstweek) >rowMeans(firstweek)
> dim(firstmonth)// return the number of rows and cols
[1] 43200 33
> nrow(firstmonth)// return the number of rows
[1] 43200
> ncol(firstmonth)// return the number of cols
[1] 33
Java Interfaces For R
注意:一定要按步骤来
(1)sudo apt-get install build-essential gfortran libreadline6-dev libxt-dev
(2)tar -zvxf R-2.13.0.tar.gz
(3)in .bashrc.这样做是希望编译R的时候,系统能够找到jvm,以便生成java代码
export R_JAVA_LD_LIBRARY_PATH=/home/chase/runnable/jdk1.6.0_45/jre/lib/amd64/server
(4)近入解压文件,做: make build--->../configure --enable-R-shlib (这个参数必须要有)--->make:
最后会提示:
trying to compile and link a JNI progam detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm make[2]: Entering directory `/tmp/Rjavareconf.51dc6y' gcc -std=gnu99 -I/home/chase/runnable/R-3.1.2/build/include -DNDEBUG -I/home/chase/runnable/jdk1.6.0_45/include -I/home/chase/runnable/jdk1.6.0_45/include/linux -I/usr/local/include -fpic -g -O2 -c conftest.c -o conftest.o gcc -std=gnu99 -shared -L/home/chase/runnable/R-3.1.2/build/lib -L/usr/local/lib64 -o conftest.so conftest.o -L/home/chase/runnable/jdk1.6.0_45/jre/lib/amd64/server -ljvm -L/home/chase/runnable/R-3.1.2/build/lib -lR make[2]: Leaving directory `/tmp/Rjavareconf.51dc6y' JAVA_HOME : /home/chase/runnable/jdk1.6.0_45 Java library path: $(JAVA_HOME)/jre/lib/amd64/server JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm Updating Java configuration in /home/chase/runnable/R-3.1.2/build Done. make[1]: Leaving directory `/home/chase/runnable/R-3.1.2/build'
然后--->make check---->make install
然后--->sudo R CMD javareconf
出现:
trying to compile and link a JNI progam detected JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux detected JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm gcc -std=gnu99 -I/usr/local/lib64/R/include -DNDEBUG -I/home/chase/runnable/jdk1.6.0_45/include -I/home/chase/runnable/jdk1.6.0_45/include/linux -I/usr/local/include -fpic -g -O2 -c conftest.c -o conftest.o gcc -std=gnu99 -shared -L/usr/local/lib64/R/lib -L/usr/local/lib64 -o conftest.so conftest.o -L/home/chase/runnable/jdk1.6.0_45/jre/lib/amd64/server -ljvm -L/usr/local/lib64/R/lib -lR JAVA_HOME : /home/chase/runnable/jdk1.6.0_45 Java library path: $(JAVA_HOME)/jre/lib/amd64/server JNI cpp flags : -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux JNI linker flags : -L$(JAVA_HOME)/jre/lib/amd64/server -ljvm Updating Java configuration in /usr/local/lib64/R Done.
(5)根据(4)中的红色字体(这一步一定要设置
export R_HOME=/usr/local/lib64/R
(6)install rJava:
$sudo R >install.packages(rJava)
install forecast: install.packages("forecast")
We can test if we are right:
测试文件src/test/Test1:
package test; import org.rosuda.JRI.Rengine; public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub Test1 t=new Test1(); t.callRJava(); } public void callRJava() { Rengine re = new Rengine(new String[] { "--vanilla" }, false, null); if (!re.waitForR()) { System.out.println("Cannot load R"); return; } //打印变量 String version = re.eval("R.version.string").asString(); System.out.println(version); //循环打印数组 double[] arr = re.eval("rnorm(10)").asDoubleArray(); for (double a : arr) { System.out.print(a + ","); } re.end(); } }
开始测试:
(1)申明动态链接库位置:libjri.so依赖与libR.so,所以需要载入$R_HOME/lib/libR.so
export LD_LIBRARY_PATH=$R_HOME/lib:/home/chase/R/x86_64-unknown-linux-gnu-library/3.1/rJava/jri/
(2)
javac -cp /home/chase/R/x86_64-unknown-linux-gnu-library/3.1/rJava/jri/JRI.jar test/Test1.java
(3)注意红色部分。
java -cp /home/chase/R/x86_64-unknown-linux-gnu-library/3.1/rJava/jri/JRI.jar:. test.Test1
Data Visualization Using R