R语言学习札记一 与C++对比

平时只对C++比较熟悉,在bioinformatics这行,不用R也不是不行,但是开发软件的难度要高一些。学习R,总感觉有点无从下手,于是想从R与C的对比开始学起。

C中内建型别有四种,int; double(float); bool以及char类型。在R中,类型大概有哪些呢?

R中也分内建型别,或者叫做元素,也叫基础类型。为了方便,我们将R中的向量 

vec <- c(1,2,3)

那么大概可以分成, number(int, float,double...), character(char), bool(TRUE or FALSE),复数,NA( is.na( ) )五种类型。其中最后一种我还是勉强把它算成一种类型了,因为在处理数据时候这种情况实在是太常见了。而且我们还不能把NA和NULL当成是一码事,NULL是根本没有至,而NA是一种特殊类型。

对于C中的逻辑运算,在R这样的数学软件中更是常用。C中常用的,放在R中,大概可以写成如下几种形式:左侧是C符号,右侧是R符号

&&       &

||          |

!=         !=

R也是一种面向对象的语言。在C中的对象,或者一种数据类型,是有其本身性质的,类似的,R也会给对象定义这种attributes。这里也是R比较特殊的地方了,相对来说没有上边的那样几句话就能说完。首先我们来谈谈对象的属性。

R中所有对象有两种基本属性,mode和length。向量作为基本内建型别(可以看成C中一个数),如果用

mode( vec )
那么就会返回四种情况:numeric, logical, complex and character。用判断函数的话,就是前边加上is.就可以用来判断某个向量的类型了。在C中强制类型转换,R中也有,所使用的函数也有固定的写法,当让我们觉得(double)这种强制转化挺好的 。在四种类型前边加上as.就可以转化了。

那么我们知道使用mode和length之后,就能对向量做基本的类型判断了。


如果向量是基本的,那么矩阵应该也是。R语言处理矩阵确实没有MATLAB那样直观。 处理速度上,也要比MATLAB慢一点,不过我记得MATLAB在做矩阵操作时也是调用LAPACK,R应该不至于蛋疼到自己写算法吧。

在属性上, 矩阵要多出来一个维度。当然我们可以简单的将一个向量变成数组,通过修改其维度。

x <- 1:8
dim(x) <- c(2,4)

然后能看出来矩阵将数据按列填满后换行。(没准也是调用BLAS所以才这样吧。。没查过纯瞎猜)

接下来我们要看看构建矩阵的方式了。有两种都可以用来构建矩阵,分别是array和matrix。这两个函数我们具体用的时候再说。






你可能感兴趣的:(C/C++以及库使用)