Duxy's

a digged hole

初识R语言

一直听说R语言做分析是非常厉害的,但是因为是一门新语言,本人又不是研究统计分析这一块儿的,所以没有兴起学习的念头。机缘巧合之下,得到了一本用R语言做统计的书,又有些问题可能会用到统计的方法,所以对R语言做了一些简单的尝试。可以说,在初接触R语言的过程中,觉得R语言的易用性离Matlab还有一定的差距,至于统计方面的使用如何,还有待后续的尝试。

本文做了如下事情:从octave导出的text格式中读出图片的像素数据,并显示为图片。

文件读取

读Matlab文件需要装一个R.matlab的库,读Octave文件需要读一个foreign的库。不过装了后发现都用不上。至少我是没能从Octave save出来的文档中读到数据。最终使用了手动输入的方式。

数组操作

R语言中的数组有两类:array与matrix。其中matrix被强制的定义为二维数组,高维的只能定义为array。
通常情况下,我们将一组数据通过连接函数c()连在一起。比如:

> x <- c(1,3,2,5)
> x
[1] 1,3,2,5

连接出来的这一串可不是矩阵,仅仅是向量,要变为矩阵,可以如下定义:

m = matrix(x, 2, 2)

或调用一些矩阵函数可以转化为矩阵。

  • 矩阵的转置:

使用函数t()进行转置。对向量进行操作后,将变为行矩阵,需要调用t(t(x))才能将x变为列矩阵。

  • 矩阵的拼接 > rbind(x,x) [,1] [,2] [,3] [,4] x 1 3 2 5 x 1 3 2 5 > cbind(x,x) x x [1,] 1 1 [2,] 3 3 [3,] 2 2 [4,] 5 5

图的显示

直接利用像素色彩出图,可以使用下面这类方法,一看就清楚了。其中利用image函数画图,前两个参数为大小,第三个参数为一个矩阵,其实就是图的像素色彩矩阵了。

tr = matrix(r,32,32);
tg = matrix(g,32,32);
tb = matrix(b,32,32);
par(mar=rep(0, 4));
Rcolor1<-rgb(1:255,0,0,alpha=100,maxColorValue=255);
Rcolor2<-rgb(0,1:255,0,alpha=80,maxColorValue=255);
Rcolor3<-rgb(0,0,1:255,alpha=30,maxColorValue=255);
image(1:32,1:32,tr,col=Rcolor1,add=F,axes=F,ann=F);
image(1:32,1:32,tg,col=Rcolor2,add=T,axes=F,ann=F);
image(1:32,1:32,tb,col=Rcolor3,add=T,axes=F,ann=F);