为什么要使用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语言介绍相关推荐

  1. 零基础自学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. ...

  2. R语言学习笔记——入门篇:第一章-R语言介绍

    R语言 R语言学习笔记--入门篇:第一章-R语言介绍 文章目录 R语言 一.R语言简介 1.1.R语言的应用方向 1.2.R语言的特点 二.R软件的安装 2.1.Windows/Mac 2.2.Lin ...

  3. R语言实战-读书笔记(第1 章 R语言介绍)

    *R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍     1.2 R的获取与安装         R可以在CRAN(Comprehe ...

  4. R语言从入门到精通Day1之【R语言介绍】

    R语言开篇–R语言介绍 开篇不再介绍R语言是如何下载和R语言的代码,如果您想真正的了解R,学习R,利用R做一些实际性的应用,不妨花点时间先了解一下当前数据科学的进展.了解R语言的历史和发展进程,R语言 ...

  5. 零基础自学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 ...

  6. 零基础自学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的下载 以微软 ...

  7. 零基础自学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 ...

  8. 《R语言实战笔记》第一章:R语言介绍

    第一章:R语言介绍 1.3.2获取帮助 1.3.3 工作空间 注意:函数setwd()不会自动创建一个不存在的目录.可以先使用函数dir.create()来创建新目录,然后使用setwd()将工作目录 ...

  9. 《R语言实战》读书笔记--第一章 R语言介绍

    1.典型的数据分析过程可以总结为一下图形: 注意,在模型建立和验证的过程中,可能需要重新进行数据清理和模型建立. 2.R语言一般用 <- 作为赋值运算符,一般不用 = ,原因待考证.用-> ...

  10. r语言glmnet包系数显示不全_第一章: R语言介绍

    1:R语言的用途 R也是一种为统计计算和绘图而生的语言和环境,R是一个全面的统计研究平台,提供了各式各样的数据分析技术. 2:R语言的使用 R语句由函数和赋值构成,命令提示符为 > ⑴赋值: R ...

最新文章

  1. 肠菌亦“醉”人 | 中国团队登Cell子刊,发现60%的非酒精性脂肪肝与肠道菌有关,携带者体内酒精可达健康人4-6倍...
  2. Mangofile.PersonalPlus5(x86) Crack
  3. 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)
  4. LeetCode 1654. 到家的最少跳跃次数(BFS)
  5. 12 - java 类加载内存图
  6. HTML参考系列(5)-表格标签
  7. sql 不为空_sql动态传参在springData中的应用(补充)
  8. python交互式方式、代码文件方式_涨见识了,在终端执行 Python 代码的 6 种方式
  9. web目录字典_Dirmap:一款高级Web目录文件扫描工具
  10. C#按Esc后退出对话框
  11. Myeclipse中添加XFire插件支持
  12. 主机前面板耳机插孔无声音解决
  13. 163邮箱服务器连接错误 请重试,163邮箱无法连接服务器
  14. 报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.
  15. 视频教程-AI 教程illustrator从入门到精通-Illustrator
  16. 上市公司关于年报、半年报、季报及其公布时间的一些知识
  17. c++practice
  18. 二叉排序树实现英文文章单词统计
  19. c语言 商品管理系统 顺序表的应用
  20. Android 10.0 进入recovery模式(等待用户选择recovery模式界面)实现自动恢复出厂设置

热门文章

  1. 皱纹检测Wrinkle-detection
  2. [NOIP模拟测试30]题解
  3. oracle 级联外键,Oracle 级联删除外键
  4. Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL ser
  5. vba学习系列(2)--以文本存储的数字转为数字格式
  6. 解决外边距坍塌的几种方法
  7. 赛扬J4105和赛扬N5095哪个好
  8. 虚拟现实跑步机Kat Walk自由来袭
  9. php 图片上添加文字
  10. 关键字 surper 和 this