第1天——R语言介绍
为什么要使用R
功能强大
R是开源的、免费的(也有商业化版本,但是免费版足够我们使用了)
多平台运行
等等
R的获取和安装
R可以从CRAN免费下载:https://cran.r-project.org/,这里是下载R语言内核,也就是实际运行R语言代码的程序。
一般而言,为了方便开发调试,我们会安装R的IDE,也就是R Studio,其分为
- R studio:https://posit.co/products/open-source/rstudio/,一般安装在个人电脑上
- R studio server:https://posit.co/products/open-source/rstudio-server/,一般安装在服务器上面。为了节省服务器资源,大部分作为服务器的Linux系统是没有安装图形化界面的。R studio server实际上就是安装在服务器上面的一套web程序,用户通过浏览器访问R studio server的网页前端,在上面进行操作,网页将命令通过HTTP或者其他网络协议回传到服务器的R studio server后端,R studio server后端再通过R语言内核执行R语言程序。
R的使用
R是一种区分大小写的解释型语言。与解释型语言对应的是编译型语言,我们先了解一些什么是编译型语言。首先我们需要知道的一点是:计算机并不认识我们写的那些花里胡哨的代码,它只能执行机器语言文件。编译型语言会将我们写的代码编译为可执行的机器码,如C、C++等都是编译型语言,编译器在编译时会进行语法检查,语法有问题的话编译阶段就报错了。解释型语言则是在运行时才翻译为机器码,如Python、R都是解释型语言,执行一次翻译一次,即使你写的脚本后面有语法问题,也是运行到那一行的时刻才报错。
R使用
<-
,而不是传统的=
作为赋值符号。如果你有其它编程语言基础,那这点可能得纠正一下,别搞混了。R也允许使用=
赋值,但是不推荐,在有的地方会出错。“当我写下这些代码的时候,上帝和我都知道这些代码的含义;一个月之后,只有上帝知道了”。R使用
#
进行注释,注释是程序员写在代码文件中的一些解释性的语言,是写给自己以及队友看的,就是为了让除了上帝之外的人也看得懂之前写的代码。当我们启动一个R终端,就是开启了一个R session(会话),一次会话期间的所有数据都保存在内存中。
国际惯例
依据国际惯例,我们来运行一个hello world程序。为了顺带学习Linux基础知识,我安装了一个Ubuntu Server的系统,然后安装了R Studio Server,后续也会基于这个环境进行演示。
使用R studio运行hello world程序,hello world程序不仅是象征性的,还能检测你环境是否配置成功~
首先我们养成一个好习惯:使用R studio项目来区分不同的代码。平时写代码时,你可以一个课题新建一个项目,或者一个章节新建一个项目。这里我新建一个项目,名称为day1。
something <- 'hello world!'
print(something)
- 书上的示例代码
# 创建数据集
age <- c(1,3,5,2,11,9,3,9,12,3)
weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)# 计算均值
mean(weight)
# 计算标准差
sd(weight)
# 计算相关系数
cor(age,weight)
# 绘制散点图
plot(age,weight)
获取帮助
- 这里的获取帮助指的是查看函数的使用教程,一般好的R包,都会配有完整的示例代码与教程。如上面的示例代码中,sd函数是干什么的?我们可以这样查看
?sd
工作空间
- 工作空间就是当前的工作环境,存储着用户的变量数据。无论是终端还是Rstudio,退出当前session时都会询问是否保留当前镜像。
- 我们可以使用tree命令(需要使用Linux终端进入到项目目录下执行)看看一个R的项目里面一般都有哪些文件。可以看到,工作空间的镜像是保存到.RData里面的。退出session时保存为镜像,就是将内存中的数据写到硬盘里面。开启session时加载镜像,就是将硬盘的数据从硬盘加载到内存,也就是数据的序列化以及反序列化的过程。
- 工作空间的镜像一般都是保存到工作目录里面的,如果你使用了R的项目,工作目录就是项目的路径下,否则就是家目录(/home/你的用户名/)。你可以通过下面的方式查看、指定工作目录。(但是我不推荐自行配置工作目录,而是使用项目来区分和管理工作空间)
# 查看
getwd()# 设置
setwd("你指定的目录")
- 你也可以手动指定将镜像保存到哪里,以及从哪里加载镜像。
# 保存工作目录全部对象到指定文件
save.image("/home/equator/r/test.RData")# 保存指定对象到指定文件
save(list = c("age","something","weight"), file = "/home/equator/r/test2.RData")# 加载
load("/home/equator/r/test.RData")
- 其它的一些管理工作空间的命令
# 列出所有对象
ls()# 删除某个对象
rm(xx)
输入输出
这里的输入输出是相对于R内核而言的,输入即给R内核下达指令,输出即R内核将结果输出到某个地方,这些地方包括文本、PNG、PDF等文件。
输入
- 进入R交互会话(如在Linux终端键入R)后,可以从键盘输入
- 也可以输入一个脚本文件,使用
source("test.R")
即可
输出
- 文本输出,键入
sink("test_out.txt")
后,所有输出都会重定向到指定的文件中;键入sink()
即可关闭重定向 sink("test_out.txt")a <- c("hello", "input", "output") print(a)sink()
- 文本输出,键入
- 图像输出,键入
pdf("test.png")或者png("test.png")
后,所有图像输出都会重定向到指定文件,键入dev.off()
即可关闭重定向 - 结合前面的例子练习一下,可以看到,文本输出与图像输出各论各的,互不干扰。
# append=T,追加内容而不是直接覆盖,split=T,控制台与文件都输出 sink("io_example_out.txt", append=TRUE, split=TRUE) pdf("test.pdf") png("test.png")age <- c(1,3,5,2,11,9,3,9,12,3) weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)print(mean(weight))sd(weight) cor(age,weight)plot(age,weight)sink() dev.off()
包
一门成熟的语言,不仅仅需要其自身强大,还需要其有良好的生态,R语言也不例外。我们可以下载许许多多的模块来拓展R的功能,这些模块是函数、数据、预编译代码的组合,也被叫做R包(package)。计算机上存储R包的目录叫做库(library)。
- 一些R包相关的函数
# 显示库所在的位置
.libPaths()# 显示库中有那些包
library()# 查看哪些包已经加载且可以使用
search()# 查看已安装的包、安装位置、版本信息
installed.packages()
R包的安装:可以看这个文章,更全面 http://t.csdn.cn/k82bM。
R包的加载:使用
library("xxx")
加载指定的R包,在一个session中,包只需载入一次。这也说明,如果你想取消加载所有后来加载的R包,重启session即可。
help(package="包名")
,可以通过help函数查看R包的官方使用教程,如果你安装的是小众的包,R包作者压根没写教程,那你只能啃源码了。。。
通过终端执行R脚本(批处理)
终端执行
R CMD BATCH [options] infile [outfile]
- options,可选的,指定控制执行的细节
- infile,输入文件,即R脚本,后缀一般是.R
- outfile,可选的,输出文件,后缀一般是.Rout
尝试执行批处理,编辑
batch.R
文件如下
cnt <- 0;
while(cnt < 60)
{cnt <- cnt+1;# 睡眠1秒,避免循环太快结束Sys.sleep(1);print(cnt);
}
- 批处理执行
执行
R CMD BATCH batch.R
后会阻塞等待执行完毕
此时在另外一个终端打开输出文件
tail -f batch.Rout
,可以动态地看到程序在不断地输出内容。(由于我们没有指定outfile
,所以R自动创建了这样一个文件:从infile
中获取文件名,拓展名为.Rout
)
R CMD BATCH batch.R &
,加上&后是非阻塞的,但是不代表是后台执行,断开执行脚本的那个ssh连接后,程序会终止运行。
结语
- 在本章中,我们学习了R、R Studio的基本界面、工作空间的管理、基本的输入输出以及R包等基础概念。但是我们好像还写不出什么复杂的代码,因为我们还没有学习到数据结构,条件控制等概念,让我们一起期待下一章节!
第1天——R语言介绍相关推荐
- 零基础自学R语言 1 R语言介绍 1.5 RStudio软件
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.5 RStudio软件 1.5.1 介绍 1.5.2 项目 1.5.3 帮助 1.5.4 使用技巧 1.5.4.1 使用历史命令 1. ...
- R语言学习笔记——入门篇:第一章-R语言介绍
R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...
- R语言实战-读书笔记(第1 章 R语言介绍)
*R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍 1.2 R的获取与安装 R可以在CRAN(Comprehe ...
- R语言从入门到精通Day1之【R语言介绍】
R语言开篇–R语言介绍 开篇不再介绍R语言是如何下载和R语言的代码,如果您想真正的了解R,学习R,利用R做一些实际性的应用,不妨花点时间先了解一下当前数据科学的进展.了解R语言的历史和发展进程,R语言 ...
- 零基础自学R语言 1 R语言介绍 1.4 基本R软件的用法
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.4 基本R软件的用法 1.4.1 基本运行 1.4.2 项目目录 1 R语言介绍 1.4 基本R软件的用法 1.4.1 基本运行 在M ...
- 零基础自学R语言 1 R语言介绍 1.2 R的下载与安装
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.2 R的下载与安装 1.2.1 R的下载 1.2.2 R软件安装 1 R语言介绍 1.2 R的下载与安装 1.2.1 R的下载 以微软 ...
- 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理
零基础自学R语言 文章目录 零基础自学R语言 1 R语言介绍 1.3 R扩展软件包的安装与管理 1.3.1 扩展包使用 1.3.2 安装 1.3.3 Github和BioConductor的扩展包 1 ...
- 《R语言实战笔记》第一章:R语言介绍
第一章:R语言介绍 1.3.2获取帮助 1.3.3 工作空间 注意:函数setwd()不会自动创建一个不存在的目录.可以先使用函数dir.create()来创建新目录,然后使用setwd()将工作目录 ...
- 《R语言实战》读书笔记--第一章 R语言介绍
1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用-> ...
- r语言glmnet包系数显示不全_第一章: R语言介绍
1:R语言的用途 R也是一种为统计计算和绘图而生的语言和环境,R是一个全面的统计研究平台,提供了各式各样的数据分析技术. 2:R语言的使用 R语句由函数和赋值构成,命令提示符为 > ⑴赋值: R ...
最新文章
- 肠菌亦“醉”人 | 中国团队登Cell子刊,发现60%的非酒精性脂肪肝与肠道菌有关,携带者体内酒精可达健康人4-6倍...
- Mangofile.PersonalPlus5(x86) Crack
- 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)
- LeetCode 1654. 到家的最少跳跃次数(BFS)
- 12 - java 类加载内存图
- HTML参考系列(5)-表格标签
- sql 不为空_sql动态传参在springData中的应用(补充)
- python交互式方式、代码文件方式_涨见识了,在终端执行 Python 代码的 6 种方式
- web目录字典_Dirmap:一款高级Web目录文件扫描工具
- C#按Esc后退出对话框
- Myeclipse中添加XFire插件支持
- 主机前面板耳机插孔无声音解决
- 163邮箱服务器连接错误 请重试,163邮箱无法连接服务器
- 报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
- 视频教程-AI 教程illustrator从入门到精通-Illustrator
- 上市公司关于年报、半年报、季报及其公布时间的一些知识
- c++practice
- 二叉排序树实现英文文章单词统计
- c语言 商品管理系统 顺序表的应用
- Android 10.0 进入recovery模式(等待用户选择recovery模式界面)实现自动恢复出厂设置
热门文章
- 皱纹检测Wrinkle-detection
- [NOIP模拟测试30]题解
- oracle 级联外键,Oracle 级联删除外键
- Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL ser
- vba学习系列(2)--以文本存储的数字转为数字格式
- 解决外边距坍塌的几种方法
- 赛扬J4105和赛扬N5095哪个好
- 虚拟现实跑步机Kat Walk自由来袭
- php 图片上添加文字
- 关键字 surper 和 this