继续学R:Vector(向量) Part 1, 多元素向量创建&类型

in #r6 years ago

在之前的文章中,学习了《R的6大基本数据类型(原子向量)》,既然说到基本类型,那么肯定就有复杂类型喽,今天我们要说的就是Vector(向量),咦,怎么又是Vector(向量)?

别急,之前的文章中介绍的向量是最最基本的向量,今天的介绍的向量是指原子向量和原子向量组成的向量(多元素向量)。

多元素向量创建

原子向量之前的文章介绍过,我们就不用多说了,今天来学一下多元是向量,看字面的意思就很好理解了,就是多个元素组成的向量呗。

创建:使用c()函数

创建多元素向量有好多方法,最常用的就是使用c()这个函数,例如:

v<-c(1, 2, 3)
print(v)
print(class(v))

上述代码输出以下结果:

从上述代码以及对应结果来看,我们知道了多元素向量的类型取决于元素的类型,和我预想的打印出Vertor大相径庭,看来还是要多尝试呀。

创建:使用冒号操作符(:)

除了使用c()函数,我们还可以对数字类型(numeric/integer/complex)使用冒号操作符(:),例如:

v<-1:5; print(v); print(class(v));
v<-1.2:5.9; print(v); print(class(v));
v<-1L:5L; print(v); print(class(v));
v<-1:"5"; print(v); print(class(v));
v<-1:5+2i; print(v); print(class(v));

输出如下:

注意其中的类型变化,挺有意思的

创建:使用seq()操作符

别问我为啥c()是函数,而seq()叫操作符,我也迷糊,不过这不影响我们使用。

使用seq()操作符创建多元素向量的列子如下:

v<-seq(5, 9, by = 0.4); print(v);

多元素向量类型

再回到使用c()函数创建多元素向量的例子,我们在那得出结论:多元素向量的类型取决于元素的类型,那么问题来了?如果c()函数中传入的是不同的类型,那么最终多元素向量的类型是啥?例如:

v<-c(1L, 1.8); print(v); print(class(v));

执行上述代码,结果如下:

也就是说,对于不同类型的元素,最终会被转换成相同的类型

那么问题又来了,转换是按什么规律转换的呢?经过我不懈努力,终于找出如下规律(转换优先级排序):

raw > logical > integer >numeric >complex > character

举例俩简单例子:

v= c(TRUE, charToRaw("Hello")); print(v); print(class(v));
v= c(2, charToRaw("Hello")); print(v); print(class(v));


好了,今天就到这里了,学太多了,怕消化不良。

相关链接

Sort:  

这帖子我一早看留言是0,以为原因是发布时间尚短,现在看来不是……

净睁眼说瞎话呢,明明好多好多留言,你咋视而不见呢?
一定是你把他们都屏蔽了

我居然有这个超能力?那等我研究研究怎么控制这个超能力,屏蔽谁不屏蔽谁……

Coin Marketplace

STEEM 0.20
TRX 0.13
JST 0.029
BTC 62871.45
ETH 3479.64
USDT 1.00
SBD 2.53