R | 常量、常量的数据类型、变量、数据结构

一、常量

常量是指直接写在程序中的值。

R语言基本的数据类型有数值型, 逻辑型,文本(字符串)。支持缺失值,有专门的复数类型

数值型常量包括整型integer单精度float双精度double等,一般不需要区分。支持科学计数法,写法如123, 123.45, -123.45, -0.012, 1.23E2, -1.2E-2等。为了表示123是整型,可以写成123L。

字符型常量用两个双引号或两个单引号包围,如"Li Ming"或'Li Ming'。字符型支持中文,如"李明"或'李明'。国内的中文编码主要有GBK编码和UTF-8编码, 有时会遇到编码错误造成乱码的问题,MS Windows下R程序一般用GBK编码,但是RStudio软件采用UTF-8编码。在R软件内字符串一般用UTF-8编码保存。

逻辑型常量只有TRUE和FALSE。

缺失值用NA表示。统计计算中经常会遇到缺失值,表示记录丢失、因为错误而不能用、节假日没有数据等。除了数值型,逻辑型和字符型也可以有缺失值, 而且字符型的空白值不会自动辨识为缺失值,需要自己规定。

R支持特殊的Inf值,这是实数型值,表示正无穷大,不算缺失值。

复数常量写法如2.2 + 3.5i, 1i等。
概括来说,R可以识别六种基本的数据类型,分别是,双整型(double)、整型(integer)、字符型(character)、逻辑型(logical)、复数类型(complex)以及原始类型(raw).

1.双整型(double)

储存普通数值型数据,可正可负,可大可小,可含小数可不含

R中键入的任何一个数值都默认以double型存储

想知道某个对象是什么类型,可以使用typeof() 函数进行查看

在数据科学里,它更常被称为数值型(numeric)

2.整型(integer)

顾名思义,只能用来储存正数。

在R中通过在数字后面加大写字母L的方式,申明该数字以整型方式储存。

在计算机内存中,整型的定义方式要比双整型更加准确(除非该整数非常大或非常小)

3.字符型(character)

字符型向量用以储存一小段文本,在R中字符要加双引号表示

字符型向量中的单个元素被称为“字符串(string)”,注意:字符串不仅可以包含英文字母,也可以由数字或符号组成

4.逻辑型(logical)

用以储存TRUE(真)和FALSE(假),在R中大写的TRUE和FALSE或者大写的T和F都被理解为逻辑型数据。

5.复数类型(complex)和原始类型(raw)

复数类型,即形如:1+i 类的数据

原始类型,用来存储数据的原始字节

二、变量

程序语言中的变量用来保存输入的值或者计算得到的值。

在R中,变量可以保存所有的数据类型。

变量都有变量名,R变量名必须以字母、数字、下划线和句点组成, 变量名的第一个字符不能取为数字。在中文环境下,汉字也可以作为变量名的合法字符使用。变量名是区分大小写的, y和Y是两个不同的变量名。

变量名举例: x, x1, X, cancer.tab, clean_data, diseaseData。

<-赋值的方法定义变量。<-也可以写成=,但是<-更直观。如

>x <- 6.25
>x = 6.25

R的变量没有固定的类型, 给已有变量赋值为新的类型, 该变量就变成新的类型, 但一般应避免这样的行为。

R是“动态类型”语言, 赋值实际上是“绑定”(binding), 即将一个变量名与一个存储地址联系在一起, 同一个存储地址可以有多个变量名与其联系。

三、数据结构

R语言数据结构包括向量矩阵数据框数组列表因子等,主要是线性代数中的一些概念。数据中元素、行、列还可以用名字访问。最基本的是向量类型。向量类型数据的访问方式也是其他数据类型访问方式的基础。

image.png

四、属性

属性是附加给向量的额外信息,可以将这些数据理解为“元数据(metadata)

可硬通过attributes()函数来获取对象的属性信息,如果对象无属性信息,则返回NULL,即空值。

1.名称属性

通过names()函数可以查看对象的名称属性,也可以通过形如:**names(对象)<-…… **的方式进行赋值,具体如下:

>names(test)
NULL
>names(test)<-c("one","two","three")
>names(test)
[1]"one"  "two"  "three"
> test
  one  two three 
      1      2     3

2.维度属性

通过dim()函数赋值或获得属性,若为向量则返回NULL(空值),具体如下:

matrix1<-matrix1(1:20,4,5)
> dim(matrix1)
[1] 4 5
> matrix2<-c(1:20)
> dim(matrix2)
NULL
> dim(matrix2)<-c(4,5)
> matrix2
      [,1][,2][,3][,4][,5]
[1,]  1  5  9  13  17
[2,]  2  6  10  14  18
[3,]  3  7  11  15  19
[4,]  4  8  12  16  20
> dim(matrix2)
[1]  4  5

3.类

在R中类(class)是对象的属性,可用class()函数获取。
对于一个标量或向量,返回的就是数据类型,对于一个数据结构,返回的就是他的数据结构。如:> test<-c(1,2,3),之后将讲解如何构造并使用自己的类。如果你想移除一个对象的类,可通过unclass()函数或者直接将NULL赋给class属性即可。

> test <- c(1,2,3)
> class(test)
[1]"numeric"
> matrix<-matrix(1:20,4,5)
> matrix
> class(matrix)
[1]"matrix"

日期与时间

在R中可以通过Sys.time()函数获取系统时间,而结果看似字符串,实则却是双整数型,并且类有“POSIXct” 和”POSIXt”两种。

POSIXct是一个被广泛使用的用于表示日期与时间的框架。在POSIXct框架下,时间被表示为自1970年1月1日零点(UTC时间)开始所逝去的秒数,并以数值型储存下来。通过将“POSIXct” 和”POSIXt”两个类的属性会提示R将该时间以人类友好的字符串形式展示出来。具体如下:

> now<-Sys.time()
> now
[1]"2017-07-24 15:42:41 CST"
> typeof(now)
[1]"double"
> class(now)
[1]"POSIXct""POSIXt"
> class(now)<-NULL
> now
[1]1500882162
> class(now)<-"POSIXct"
> now
[1]"2017-07-24 15:42:41 CST"
> unclass(now)
[1]1500882162

在R的数据结构中介绍了一个因子的概念,当使用factor()函数对向量进行改造时,会赋予向量一个levels和class属性, 其中levels属性包含显示因子值得一组标签,而class属性包含factor.

三、强制转化

强制转化一般并不推荐,但有的时候这样做能够起到特殊的效果。具体来说,强制转化规则如下:

1.如果向量中含字符串,强制转化会把所有元素转化为字符型

2.如果向量中只含数值型或逻辑型,强行转化会将逻辑型都转化为数值型(TRUE–>1,FALSE–>0)

image
> sum(c(T,T,F,F))
[1]2

上例可以计算出一组向量中为真的个数,就是一种强制转化的妙用

R中还可以选择一种更为明确的类型转化方式,as.+数据类型,如

> as.numeric(T)
[1]1
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容