接触R语言不久,一开始以为R语言很简单,很多时候只是一句代码的问题。但学起来才知道,不是那么一回事。看到不少同学问一些基础的问题,结合自己犯过的错,总结以下几条关于数据类型的学习心得:
(1)R语言中向量和矩阵的是不同的。一般人会认为向量就是一维的矩阵,但R语言不是这样操作,不同类型对应不同的操作。如dim()函数可返回矩阵的行、列数,但是dim()作用域一个向量,则会返回NULL;同时,若将向量强制转化为矩阵,不是像显示向量时的行矩阵,而是一个列矩阵;
(2)R中矩阵提取行、列存在意外将维的问题。这其实和第一条有密切联系,进而导致些意外的错误。具体而言,若从矩阵中提取某一行出来,R会默认的将改行用向量存储,而不再是矩阵,而言导致涉及矩阵的操作出错。一个明显的例子就是apply(),该函数的第二个参数需要制定数据操作的维度,但若矩阵已不再是矩阵(转成向量),那么指定1、2都没有意义了。因此,矩阵提取时要注意,不要改变数据维度,常用的做法是设置drop=FALSE,如从3*2的矩阵中提取第二行,应该为m[2,,drop=FALSE];
(3)因子和数值的转化。这是个有趣的问题。假如c=(1,3,5)是个数值向量,将之转为因子类型是没有问题的,对应的水平也为1,3,5,但是若再次将因子转为数值时,转化后的结果不再是数据向量(1,3,5),而是(1,2,3),也就是说对因子转数值,默认的操作应该是对因子排序,然后依次转为连续的数值,而不是直接将显示的因子转为数值,此处需要格外注意。
以上几点注意是针对数据格式的,也是个人最近编码中遇到最多的问题(容易忽略)。在此,和大家分享,纰漏之处,还望多多指点,谢谢!


雷达卡






京公网安备 11010802022788号







