继续学R:R的6大基本数据类型(原子向量)

in #r6 years ago

在学一门编程语言时,避免不了要和数据打交道,那么数据在这门语言中是如何存储和使用的呢?这就涉及到了数据类型。

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类型
整型/ integer1L, 100Lv<-100L; print(class(v));[1] "integer"int
数字/numeric123, 123.45v<-123.45; print(class(v));[1] "numeric"float
复数/complex3 + 2iv<-3 + 2i; print(class(v));[1] "integer"complex
逻辑型/logicalTRUE, FALSEv<-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 6fv<-charToRaw("Hello"); print(class(v));[1] "raw"bytes

由此看来,R中的6大原子类型和Python中的类型也差不多啦(请叫我差不多先生)。

赋值

因为例子代码中用到了赋值语句,所以多啰嗦两句,很多编程语言都是使用诸如:var = 1 类似的赋值方式。R语言的赋值让我好一通迷糊:一是好多赋值符号;二是支持向右赋值。

向左赋值

向左赋值可以使用:
=
<-
<<-

向右赋值

向右赋值可以使用:
->
->>

至于这些符号有啥区别,我找了一下,找到一些相关文章,但是没详细去研读,用到的时候再说吧,列到相关链接里了,反正现在我知道的这些已经够我用的啦😀

相关链接

Sort:  

現在python社群越來越大,統計套件也越來越完善了,我也覺得它比R好用很多。
之前寫R有次真的碰到 =<-不同所以壞掉的bug,被搞得很生氣xDDD

用过R,从来没喜欢过,还是python好

R虽然很好用,比起python会写比较少代码。但我还是不熟悉,我比较喜欢python吧,R有太多坑了,不是给程序员设计的语言。

激励我每天也学代码,谢谢大牛

o哥看问题的角度和深度就是不一样。complex 和 raw 类型我从来没用过。还有,有的语言是区分 character 和 string 的,也就是单个字符和字符串,但 R 里是不分的,python 分不分?

Coin Marketplace

STEEM 0.22
TRX 0.21
JST 0.035
BTC 98789.27
ETH 3346.59
USDT 1.00
SBD 3.08