R语言(1)-初识与数据结构

a picture is worth a thousand words!

​一,R语言简介

1,R语言的发展

上世纪90年代初,新西兰奥克兰大学 Ross Ihaka 和 Robert Gentleman 尝试构建了一个统计环境。

Ross Ihaka     Robert Gentleman

 

1997年以后,形成了一个核心团队对R 语言源代码进行管理与修改。

S语言:

1976年贝尔实验室发展起来的数据交互分析系统;是一种高级程序语言,很好地统计应用快速开发系统。

关于S语言更多信息见:

http://cm.bell-labs.com/cm/ms/departments/sia/S/history.html

Scheme语言:

Scheme 语言是计算机表面处理语言,该语言用于处理包含有表格的数据的编程语言,被广泛地运用于人工智能研究。

更多内容:

http://swiss.csail.mit.edu/projects/scheme/

简单的来说,

2,R语言软件与环境

本人所使用的是3.6.3版本,R语言版本发展较快,通常几个月就会发布新的版本。最新版本链接如下:

https://cran.r-project.org/src/base/R-4/

deprecated:由于R版本问题会出现函数弃用。

已经到了4.0.3,通常大版本号的更新会伴随着软件包的不稳定。

R语言3.6.3界面——远古,有年代感!!!

关于R studio:R studio是R的图形界面之一,可以让R语言代码更直观、明了地运行。RStudio同样是免费和开源的,可以在网站上自由下载与使用。

http://www.rstudio.com/ide/download/

R studio界面-看起来好多了

R studio的优点:

  1. 代码字体高亮,代码完整性智能识别、自动缩进;

  2. 可直接执行R 程序代码;

  3. 可运行多个R 程序;

  4. 可直接浏览工作表和数据;

  5. 可随意缩放绘制的图形,并且有多种输出格式;

  6. 整合R 帮助和R 使用文档;

  7. 可查看R 命令的运行记录。

 

3,关于R语言的几个重要概念

  1. 使用期 (Session): : R系统启动到结束之间的时间段

  2. 对 象 (Object): : 由R建立或处理的实体,包括变量、向量、矩阵、组合、函数等

  3. 历 史 史  (Histroy): : R 使 用 期 间 所 应 用 的 历 史 记 录(.Rhistroy)

  4. 工 作 空 间  (Workspace): : 当 前 被 存 储 对 象 的 集 合(.Rdata)。不但包括对象而且包含了对象的系统环境;当一次使用完毕要关闭R时,R会询问是否保存工作空间

  5. 软件包 (Package): : 执行一定功能的函数、数据等的集合,一些内置于R系统内,大部分外置于网络。

4,R语言的工作方式

  1. 命令行输入按回车键执行。

  2. 命令行由变量、运算符、赋值符号或函数组成

  3. 一行可以执行一个命令或多个命令,如果是多个命令,

  4. 命令之间以“;” 隔开。

  5. 命令行中空格不影响命令执行

  6. R 退出命令为q()

#关于R语言的基本介绍就到这里了,具体的细节可查阅相关书籍。


 

二,R语言基本数据结构(按对象来划分)

  • 向量(vector)

  • 列表(list)

  • 矩阵(matrix)

  • 数组(array)

  • 因子(factor)

  • 数据框(data.frame)

1,向量(vector)

x <- c(1,2,3,4)y=log(x)plot(x,y)#图像如下#截取y[1]#结果0y[1:3]#结果:0.0000000 0.6931472 1.0986123y[-4]#表示不取第四个数字对应的y值。结果为:0.0000000 0.6931472 1.0986123y[y>1]#也可以进行嵌套。结果:1.098612 1.386294

plot(x,y)

2,列表(list):列表可以用list函数创建,方法与创建数据框类似。它对其中包含的对象类型没有限制。

x <- 1:4; y <- 2:4L1 <- list(x, y); L2 <- list(A=x, B=y)L1; L2####结果####[[1]][1] 1 2 3 4[[2]][1] 2 3 4$A[1] 1 2 3 4$B[1] 2 3 4

3,矩阵(matrix)

R 语言为线性代数的研究提供了矩阵类型,这种数据结构很类似于其它语言中的二维数组,但 R 提供了语言级的矩阵运算支持。

矩阵里的元素可以是数字、符号或数学式。语法格式如下:

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,dimnames = NULL)data 向量,矩阵的数据nrow 行数ncol 列数byrow 逻辑值,为 FALSE 按列排列,为 TRUE 按行排列dimname 设置行和列的名称

合并向量或矩阵:

m1 <- matrix(1, nr = 2, nc = 2);m2 <- matrix(2, nr = 2, nc = 2);rbind(m1, m2); cbind(m1, m2)#     [,1] [,2][1,]    1    1[2,]    1    1[3,]    2    2[4,]    2    2     [,1] [,2] [,3] [,4][1,]    1    1    2    2[2,]    1    1    2    2

矩阵乘积的运算:

 rbind(m1, m2) %*% cbind(m1, m2) #     [,1] [,2] [,3] [,4][1,]    2    2    4    4[2,]    2    2    4    4[3,]    4    4    8    8[4,]    4    4    8    8

矩阵的转置:

 n1<- matrix(1:4, nr = 2, nc = 2); t(n1 ) #     [,1] [,2][1,]    1    2[2,]    3    4

提取或修正一个矩阵的对角元:

 diag(n1); diag(n1) <- 10;v <- c(10, 20, 30); diag(v)#     [,1] [,2] [,3][1,]   10    0    0[2,]    0   20    0[3,]    0    0   30

矩阵求逆:

solve(n1)#> solve(n1)           [,1]        [,2][1,]  0.1063830 -0.03191489[2,] -0.0212766  0.10638298

4,数组(array)

语法格式:

array(data = NA, dim = length(data), dimnames = NULL)#data 向量,数组元素。dim 数组的维度,默认是一维数组。dimnames 维度的名称,必须是个列表,默认情况下是不设置名称的。

实例:

# 创建两个不同长度的向量vector1 <- c(5,9,3)vector2 <- c(10,11,12,13,14,15)# 创建数组result <- array(c(vector1,vector2),dim = c(3,3,2))print(result)#运行结果:可以看到一维和二维的结果, , 1     [,1] [,2] [,3][1,]    5   10   13[2,]    9   11   14[3,]    3   12   15, , 2     [,1] [,2] [,3][1,]    5   10   13[2,]    9   11   14[3,]    3   12   15

5,因子(factor)

一个因子不仅包括分类变量本身还包括变量不同的可能水平。

因子用于存储不同类别的数据类型,例如人的性别有男和女两个类别,年龄来分可以有未成年人和成年人。R 语言创建因子使用 factor() 函数,向量作为输入参数。

语法:

factor(x,levels=sort(unique(x),na.last=TRUE),labels=levels,exclude=NA,ordered=is.ordered(x))#其中:levels 用来指定因子可能的水平(缺省值是向量x中互异的值);labels用来指定水平的名字;exclude表示从向量x中剔除的水平值;ordered是一个逻辑型选项用来指定因子的水平是否有次
factor(1:3, levels=1:5)factor(1:3, labels=c("A", "B", "C"))#[1] A B CLevels: A B C

6,数据框(data.frame)

 

数据框可以由函 数read.table 间接创建;也可以用函数data.frame创建。数据框中向量必须有相同的长度,若其中有一个比其它短,它将“循环”整数次

填充。

x <- 1:4; n <- 10; M <- c(10, 35)data.frame(x, n); data.frame(x, M)  x  n1 1 102 2 103 3 104 4 10  x  M1 1 102 2 353 3 104 4 35
table = data.frame(    姓名 = c("张三", "李四"),    工号 = c("001","002"),    月薪 = c(1000, 2000)                   )print(table) # 查看 table 数据#执行以上代码输出结果为:姓名 工号 月薪1 张三  001 10002 李四  002 2000

 

#R语言的数据类型主要有四种比较常用:numeric(数值型)、character(字符型)、date(日期型)、logical(逻辑型)。 

进行数据分析时会进行相应的转换。


附R常用快捷键:


 

参考资料:https://www.runoob.com/r/r-data-types.html

  • 脚本编辑窗口:

    • 新建脚本:Ctrl+Shift+N

    • 代码提示与补全:Tab

    • 注释或取消注释:Ctrl+Shift+C

    • 运行所选代码:Ctrl+Enter

    • 运行全部代码:Ctrl+Shift+Enter

    • 全选:Ctrl+A

    • 选择:Shift+箭头

    • 删除行:Ctrl+D

    • 撤销:Ctrl+Z

    • 重做:Ctrl+Shift+Z

    • 赋值符:Alt+-

    • 代码折叠:Alt+L

    • 代码展开:Shift+Alt+L

    • 保存本脚本:Ctrl+S

    • 保存全部脚本:Ctrl+Alt+S

    • 增加缩进:选中代码后,Tab(可包括多行)

    • 减小缩进:选中代码后,Shift+Tab

    • 智能缩进:选中代码后,Ctrl+I

    • 智能缩进加智能空格:Ctrl+Shift+A(更高级的代码格式规范化工具,可参考formatR包)

    • 选择与替换:Ctrl+F

    • 提取函数:Ctrl+Alt+X(RStudio 可以分析某一代码段,并自动将其转换成一个可重复使用的函数。任何在选择的代码内的“自由的”变量,即那些被引用但没有被创建的变量,将被转化为函数的参数)

  • 命令窗口中:

    • 历史中的上一条命令:向上箭头

    • 历史中的下一条命令:向下箭头

    • 中断运行的代码:Esc

    • 清除命令窗口中的内容:Ctrl+L

#建了微信群,欢迎学习R语言的加入,在这里我们可以讨论基本知识,绘图,地理数据处理与分析等...如若失效,可添加微信工宗号加入:egi0605

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值