约翰霍普金斯大学数据科学系列课程——R语言:数据类型

1.原子对象

R语言有5类最基本的原子对象:

1)  字符型character

字符型对象用” ”包括。

2)  数值型numeric(real numbers)

数字对象在R中默认为数值型(numeric),如果你需要指定一个数据为整数型,需要在改数字后加上L。如:数字123默认为numeric型,如果需要其为integer型,可表示为123L。

3)  整数型integer

4)  复数型complex

复数的实部用实数表示,虚部用实数+i表示。如:3+2i,2+1i等。

5)  逻辑型logical(True/False)

注:R语言中还有几类特殊对象:

  • Inf\-Inf(infinity)表示正负无穷大
<span style="font-size:18px;"><span style="font-size:18px;">> 1/0
[1] Inf
> -1/0
[1] –Inf</span></span>
  • Na(not available)表示缺失值

NaN(not anumber)表示无意义值

<span style="font-size:18px;"><span style="font-size:18px;">> 0/0
[1] NaN</span></span>

2.赋值与注释

R中赋值采用指向符号“<-”表示,很形象,但是需要按住shift键才能打出符号“<”,并且赋值符号由两个字符组成,因此写代码时非常不方便。

R语言用两个“##”进行注释,##后的代码不被执行,作用域在改行内有效。

<span style="font-size:18px;"><span style="font-size:18px;">> x<-c(1,2,3)##y<-4
> x
[1] 1 2 3
> y
错误: 找不到对象'y'</span></span>

3.向量(vector)

R中向量可以用函数c()(concatenate)创建向量,同一向量内的对象类型必须相同:

<span style="font-size:18px;"><span style="font-size:18px;">> x <- c(0.5, 0.6) ## numeric
> x <- c(TRUE, FALSE) ## logical
> x <- c(T, F) ## logical
> x <- c("a", "b", "c") ## character
> x <- 9:29 ## integer
> x <- c(1+0i, 2+4i) ## complex</span></span>

也可以用函数vector()初始化向量:vector(“datatype”, length=length_of_vector)

<span style="font-size:18px;"><span style="font-size:18px;">> x<-vector("integer",length=5)
> x
[1] 0 0 0 0 0
> y<-vector("character",length=5)
> y
[1] "" "" "" "" ""</span></span>

4.最低共有特性(least common denominator)

在同一个向量中,如果有不同类型的对象,R不会报错,而是遵守低共有特性,将高类型的对象向低类型转换。

<span style="font-size:18px;">> x<-c(TRUE,2,1.2,3+2i,"Hello")
> x
[1] "TRUE"  "2"     "1.2"   "3+2i"  "Hello"##
> x<-c(TRUE,2,1.2,3+2i)
> x
[1] 1.0+0i 2.0+0i 1.2+0i 3.0+2i
> x<-c(TRUE,2,1.2)
> x
[1] 1.0 2.0 1.2
> x<-c(TRUE,2)
> x
[1] 1 2</span>

由上例可以看出,基本对象等级由高至低排序为:logic、integer、numeric、complex、character。

5.类型强转

R通过as.datatype(object)函数将对象类型进行强制转换,转换原则也遵循高等级对象可转换为低等级,而低等级对象不能转换为高等级(转换时会丢失数据信息)。

<span style="font-size:18px;">> x <- 0:6
> class(x)
[1] "integer"
> as.numeric(x)
[1] 0 1 2 3 4 5 6
> as.logical(x)
[1] FALSE TRUE TRUE TRUE TRUE TRUE TRUE
> as.character(x)
[1] "0" "1" "2" "3" "4" "5" "6"
> as.numeric(x)
[1] NA NA NA
警告信息:
强制改变过程中产生了NA
> x<-3+2i
> as.numeric(x)
[1] 3
警告信息:
强制改变时丢弃了虚数部分</span>

6.矩阵

矩阵是二维数组,矩阵中的对象具有相同的类型,可以通过函数matrix创建矩阵,格式为:

m<-matrix(vector,nrow=number_of_rows,ncol=number_of_columns,byrow=logic_value)

<span style="font-size:18px;">> m<-matrix(nrow=2,ncol=3)
> m
     [,1] [,2] [,3]
[1,]   NA   NA   NA
[2,]   NA   NA   NA
> m<-matrix(1:6,nrow=2,ncol=3)
> m
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6</span>

矩阵是默认按列填充的,如果需要矩阵按行填充,需要将byrow属性设置为TRUE。

<span style="font-size:18px;">> m<-matrix(1:6,nrow=2,ncol=3,byrow=TRUE)
> m
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
</span>

也可以先创建向量,再通过dim()函数将该向量中的对象加入指定矩阵:

<span style="font-size:18px;">> a<-c(2,3)
> a
[1] 2 3
> m<-c(1,2,3,4,5,6)
> dim(m)<-c(2,3)
> m
     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
</span>

dim()函数也可以用来查看矩阵的维度:

<span style="font-size:18px;">> dim(m)
[1] 2 3
</span>

矩阵也可以通过函数cbind()和rbind()函数将向量合并成矩阵:

<span style="font-size:18px;">> x<-c(1,2,3)
> y<-c(4,5,6)
> z<-c(7,8,9)
> cbind(x,y)
     x y
[1,] 1 4
[2,] 2 5
[3,] 3 6
> rbind(x,y)
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6
> rbind(x,y,z)
  [,1] [,2] [,3]
x    1    2    3
y    4    5    6
z    7    8    9
</span>

7.列表

列表(list)是一种特殊的向量,list可以包含不同类型的对象,甚至包括向量对象和矩阵对象等。列表中每个对象之间用逗号隔开,每个对象索引号用双“[[]]”表示,而每个对象中的元素用单“[]”表示。

<span style="font-size:18px;">> x<-list("hello",1:4L,3.2,4+5i,TRUE)
> x
[[1]]
[1] "hello"

[[2]]
[1] 1 2 3 4

[[3]]
[1] 3.2

[[4]]
[1] 4+5i

[[5]]
[1] TRUE
</span>

8.因子(factor)

因子一般用来表示分类数据,数据既可以是有序的,也可以是无序的。使用factor表示分类标签比较直观,例如使用“male”“female”优于使用1,2这样的数量值去表示。

<span style="font-size:18px;">> x <- factor(c("yes", "yes", "no", "yes", "no"))
> x
[1] yes yes no  yes no
Levels: no yes
> table(x)
x
 no yes
  2   3
</span>

levels中对象的顺序,也可以通过参数levels自定义。

<span style="font-size:18px;">> x <- factor(c("yes", "yes", "no", "yes", "no"),levels=c("yes","no"))
> x
[1] yes yes no  yes no
Levels: yes no
</span>

9.缺失值

is.na()用于测试对象是否为NA,is.nan()用于测试对象是否为NaN。NA是NaN,但NaN不是NA,NaN比Na程度更深。

<span style="font-size:18px;">> b<-c(1,2,3,NA,4)
> is.na(b)
[1] FALSE FALSE FALSE  TRUE FALSE
> is.nan(b)
[1] FALSE FALSE FALSE FALSE FALSE
> b<-c(1,2,3,NaN,4)
> is.na(b)
[1] FALSE FALSE FALSE  TRUE FALSE
> is.nan(b)
[1] FALSE FALSE FALSE  TRUE FALSE
</span>

10.数据框

数据框用来储存tabular数据,用data.frame()创建。可以将数据框看作特殊的list集合,每个list长度相同且对应位置的数据类型相同。

<span style="font-size:18px;">> x<-data.frame(a=1:4,b=c("a","b","c","d"))
> x
  a b
1 1 a
2 2 b
3 3 c
4 4 d
> nrow(x)
[1] 4
> ncol(x)
[1] 2
</span>

11.命名

R可以通过函数names()给想了对象命名,通过dimnames()给矩阵命名,同样也可以给列表命名:

<span style="font-size:18px;">> x<-c(1,2,3,4)           ##给向量命名
> names(x)<-c("one","two","three","four")
> x
  one   two three  four
1     2     3     4
> names(x)
[1] "one"   "two"   "three" "four"
> y<-list(one=1,two=2,three=3)   ##给列表命名
> y
$one
[1] 1

$two
[1] 2

$three
[1] 3
> m<-matrix(1:4,nrow=2,ncol=2)
> m
     [,1] [,2]
[1,]    1    3
[2,]    2    4
> dimnames(m)<-list(c("one","two"),c("three","four"))
> m
    three four
one     1    3
two     2    4
</span>

时间: 2024-08-02 15:11:55

约翰霍普金斯大学数据科学系列课程——R语言:数据类型的相关文章

约翰霍普金斯大学数据科学系列课程——R语言:提取子集

在R语言中,有下面三种操作符可以提取对象的子集: ? "["通常返回的对象与原对象的类型相同:它也可以返回一个对象中的多个元素 ? "[["用来从列表(list)或数据框(data.frame)中提取对象:也可从列表或数据框中提取单个元素,且返回对象的类型可以不为列表和数据框. ? "$"可以通过名称从列表和数据框中提取元素:如果仅从抽取元素的角度来看,和"[["没有区别 (1) 向量 向量可以使用"[]"

约翰霍普金斯大学数据科学系列课程——导论

这几个月我以斯坦福大学Andrew Ng(中文译作吴恩达,他也是Coursera网站的创始人)的机器学习讲义为参考,在CSDN博客上写了一些机器学习和数据挖掘相关的总结笔记(还有独立成分分析和强化学习两章没有完成),通过学习和总结,对以前学过的统计学和数据挖掘等有了一些新的认识(很多公式最好自己去推导,这样能够真正的加深认识.记忆深刻).但在学习时,也感觉自己主要有两大不足:1.理论不够扎实.如在前几天总结贝叶斯机器学习的相关概念,才发现自己根本没吃透贝叶斯学派的本质思想,而仅仅是知道个贝叶斯公

约翰·霍普金斯大学

约翰·霍普金斯大学(The Johns Hopkins University),简称Hopkins或JHU,成立于1876年,是一所世界顶级的著名私立大学,美国第一所研究型大学,也是北美顶尖大学学术联盟美国大学协会(AAU)的14所创始校之一.美国国家科学基金会连续33年将该校列为全美科研经费开支最高的大学.截止目前,学校的教员与职工共有36人获得过诺贝尔奖(世界第17)[1].2015-16年<美国新闻与世界报道>世界大学排名将其列为世界第12,美国第10:2016年英国<泰晤士报&g

《数据科学中的R语言》中文PDF+源代码

下载:https://pan.baidu.com/s/1xk-b3Y5-EYRvoheah-6kyQ 书籍PDF共计417页,配套源代码.国人所写的经典书籍.本书一切从实际应用出发,以R语言为核心工具,介绍了各类分析方法的实现及其在各领域的应用情况. 原文地址:http://blog.51cto.com/3215120/2307083

数据科学实战手册(R+Python)书中引用资料网址

本文会持续将<数据科学实战手册(R+Python)>一书中的附带参考资料网址手打出来, 方便访问. 由于书中的参考资料网址太多, 这个文档将可能花费一段时间才能完成. 第一章 P7  Rstdio (http://www.rstdio.com/) 参考Gettinng Started with R文章: http://support.rstdio.com/hc/en-us/articles/201141096-Getting-Started-With-R 访问RStdio的主页: http:/

分享《数据科学实战手册(R+Python)》中文PDF+英文PDF+源代码

下载:https://pan.baidu.com/s/1Iw0pHxKqp2mKC9ksR5wfPQ 更多分享资料:https://www.cnblogs.com/javapythonstudy/ <数据科学实战手册(R+Python)>中文PDF+英文PDF+源代码中文PDF,带书签目录,354页:英文PDF,带书签目录,396页:两版对比学习.配套源代码. 中文版如图: 原文地址:https://www.cnblogs.com/javapythonstudy/p/9924670.html

大数据分析学习之使用R语言实战机器学习视频课程

大数据分析学习之使用R语言实战机器学习网盘地址:https://pan.baidu.com/s/1Yi9H6s8Eypg_jJJlQmdFSg 密码:0jz3备用地址(腾讯微云):https://share.weiyun.com/5tk6j1Z 密码:rdia9t 机器学习的核心主要侧重于找出复杂数据的意义.这是一个应用广泛的任务,机器学习的使用是非常广泛的. 本课程主要分为两个阶段,第一个部分:掌握R语言的处理数据的基本语法.第二部分:介绍机器学习原理,并通过大量的案例,为学员介绍R语言通过机

2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用

前言 第一次在以数据分析为切入点的会议上做演讲,感觉还是挺不一样的.大会分为"金融数据洞察","医疗数据洞察","电商数据洞察","大小数据洞察"的4个部分,分别介绍了数据分析在不同行业的应用情况.当然,这次我是在"金融数据洞察"分论坛. 我非常有幸作为分享嘉宾参加2015年的中国数据分析师行业峰会,分享R语言在金融领域中的应用. 目录 我的演讲主题:R语言量化投资数据分析应用 会议体验和照片分享 整体文章

数据科学中的R和Python: 30个免费数据资源网站

1 政府数据 Data.gov:这是美国政府收集的数据资源.声称有多达40万个数据集,包括了原始数据和地理空间格式数据.使用这些数据集需要注意的是:你要进行必要的清理工作,因为许多数据是字符型的或是有缺失值. Socrata:它是探索政府相数据的另一个好地方.Socrata的一个了不起的地方是,他们有不错的可视化工具,使研究数据更为容易. 一些城市都有自己的数据门户网站设置,可供访问者浏览城市的相关数据.例如,在旧金山数据网站,你可以获得很多数据,从犯罪统计到城市的停车位. 联合国有关网站,例如