继续学R:R的6大基本数据类型(原子向量)
在学一门编程语言时,避免不了要和数据打交道,那么数据在这门语言中是如何存储和使用的呢?这就涉及到了数据类型。
R对象 & 原子向量
R语言中使用R对象(R-object)
来存储数据,常见的R对象有:
- 向量 / Vectors
- 列表 / Lists
- 矩阵 / Matrices
- 数组 / Arrays
- 因子 / Factors
- 数据帧 / Data Frames
其中向量 / Vectors是最基本的R对象,有六种类型的原子向量(atomic vectors),分别是: 逻辑型/logical、整型/ integer、数字/numeric、复数/complex、字符/character、原生/raw
原子向量对比
我个人理解原子向量就好比其它编程语言中的基本数据类型,除了直接使用以外还可以用于构造其它复杂的数据类型,这里我先不研究那些复杂的类型都咋玩,先来对比一些这些基本类型吧。
在这之前,我们先介绍一个函数class()
,这个函数作用是返回对象的类型,大概和Python中的type()
类似吧,比如print(class(1))
会返回
[1] "numeric"
下边我通过一个表格来对比一下这6大原子类型,并且标注出对应的Python语言中的类型
类型 | 例子 | 代码 | 输出 | Python类型 |
---|---|---|---|---|
整型/ integer | 1L, 100L | v<-100L; print(class(v)); | [1] "integer" | int |
数字/numeric | 123, 123.45 | v<-123.45; print(class(v)); | [1] "numeric" | float |
复数/complex | 3 + 2i | v<-3 + 2i; print(class(v)); | [1] "integer" | complex |
逻辑型/logical | TRUE, FALSE | v<-TRUE; print(class(v)); | [1] "logical" | bool |
字符/character | 'a', "abc", 'abc' | v<-"abc"; print(class(v)); | [1] "character" | str |
原生/raw | "Hello" is stored as 48 65 6c 6c 6f | v<-charToRaw("Hello"); print(class(v)); | [1] "raw" | bytes |
由此看来,R中的6大原子类型和Python中的类型也差不多啦(请叫我差不多先生)。
赋值
因为例子代码中用到了赋值语句,所以多啰嗦两句,很多编程语言都是使用诸如:var = 1
类似的赋值方式。R语言的赋值让我好一通迷糊:一是好多赋值符号;二是支持向右赋值。
向左赋值
向左赋值可以使用:
=
<-
<<-
向右赋值
向右赋值可以使用:
->
->>
至于这些符号有啥区别,我找了一下,找到一些相关文章,但是没详细去研读,用到的时候再说吧,列到相关链接里了,反正现在我知道的这些已经够我用的啦😀
現在python社群越來越大,統計套件也越來越完善了,我也覺得它比R好用很多。
之前寫R有次真的碰到
=
和<-
不同所以壞掉的bug,被搞得很生氣xDDD用过R,从来没喜欢过,还是python好
R虽然很好用,比起python会写比较少代码。但我还是不熟悉,我比较喜欢python吧,R有太多坑了,不是给程序员设计的语言。
激励我每天也学代码,谢谢大牛
o哥看问题的角度和深度就是不一样。complex 和 raw 类型我从来没用过。还有,有的语言是区分 character 和 string 的,也就是单个字符和字符串,但 R 里是不分的,python 分不分?