本篇参考:

基础信息

  • image
  • 书名:R in Action
  • ISBN:978-1-617-29138-8
  • 1.1 Introduction to R
  • Incentive:学习R基础,以使用文献计量包bibliometrix

1.1 Introduction to R

R is one of the most popular platforms for data analysis and visualization currently available

image
数据分析的典型流程

1.1.1 Why use R?

重要好处:开源免费,图形,社区好,包多

Graphs like this are difficult to create in other statistical programming languages but can be created with a line or two of code in R.

不就是包多呗,python岂不更多
当然在特定领域(例如截至2021.12.17,医学)R还是有优势

because much of the functionality comes from optional modules created by independent contributors, this documentation can be scattered and difficult to locate

总之要学会STFG,RTFM

1.1.2 Obtaining and installing R

https://cran.r-project.org/

Windows

当前版本4.1.2 for windows
image
下载安装包,进入安装流程。注意
image
这里自定义可以根据自己喜好来(安装目录不要有中文)
image
安装结束

  • 双击桌面上的图标打开R
    image
  • help()查看在线帮助,help.start()localhost:22791看离线帮助
  • 我们看到可以交互
> print('hello world')
[1] "hello world"
> 1+1
[1] 2
  • 键盘上下可以看历史命令

Linux

也很容易安装。略

1.1.3 Working with R

基础特性:大小写敏感,解释型,一切都是对象,推荐用<-赋值,不推荐=->,使用#注释
例子:婴儿月数和体重关系。
同类数据做成同等地位(向量化)

> 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)

然后即可尝试调用meansdcorplot等函数
q()退出
demo()有很多效果展示

帮助系统

除了help相关的名字外,还有example("foo")举例,apropos("foo", mode="function")找名字里有某某的,data()看数据集,vignette()vignette("foo")看“高级”文档
image
这个example太甜了呀,直接给出例程,还有运行结果,漂亮图

The loanword apropos comes from the French phrase à propos de, meaning with respect to. In English, apropos is conventionally used as a preposition meaning with regard to, and it's also an adjective for pertinent or to the point.
A vignette is a long-form guide to your package. Function documentation is great if you know the name of the function you need, but it’s useless otherwise. A vignette is like a book chapter or an academic paper: it can describe the problem that your package is designed to solve, and then show the reader how to solve it

工作空间

相当于整个“状态”(类比图灵机的状态,虚拟机的状态等,可完全复制)

  • 上下键翻看历史记录也能还原(虽然这并不是狭义的“状态”)

getwd()setwd():工作的目录
注:setwd()要注意绝对与相对路径,使用forward slash/,而不是\(backslash用于转义),注意引号,等等。
除了默认的工作空间映像外,还有其它灵活的数据持久化方法。datahistory可分开,也不一定每次要保存所有对象。
对于Windows和Mac,可以直接双击.RData读取

输入输出

source("foo.R")运行写好的脚本,sink重定向输出至文件,bmp("foo.bmp")def.off()分别重定向图输出和定向回屏幕(注:bmp("foo.bmp")本身并不写入图。其只是做了重定向动作。等待后续写入)

1.1.4 Packages

.libPaths()library():必备,看路径和包列表(注:但library("foo")用来导入)

  • 讲真,之前vignette()也是:好像R挺喜欢参数个数不同意思完全不同的。(即少了参数不是填默认参数,而是完全另一个意思)
    • 不过也还好,你可以认为加了参数的是“主要用法”,基本上吧

search()看当前用的包
install.packages()等用于装包(有点意思的是装包和跑程序在一个地方,相比于pythonpip
甚至更新,列表等各种包管理都在自己里面搞定
导入包:可以手动,可以定制后启动时自动导入
包帮助:除了普通的help("foo")(看函数等),还有help(package="package_name")

1.1.5 Batch Processing

两种R的工作方式。一种交互式,方便看和检查。一种就是脚本放那里自己跑。这个Batch意思是一堆指令集合到一起。有点像Shell脚本那种感觉,只不过主要处理的是数而非字符串。
Linux
R CMD BATCH options infile outfile,其中infile是源码,一般并不指代数据集输入
Windows比较复杂,要指定路径。例如

"C:\Program Files\R\R-3.1.0\bin\R.exe" CMD BATCH --vanilla --slave "c:\my projects\myscript.R"

(注:如果你想加环境变量来简化命令,可以参考3和31期)

1.1.6 Using output as input: reusing results

一个函数直接使用是直接输出,那么<-就整体存入变量,后续summaryplotcooks.distancepredict等等都可以进一步操作。且连续套用函数可以“多级中间变量”

  • 文盲(就是我)不知道cook是啥???cook一下就行

1.1.7 Working with large datasets

一般情况下正在处理的数据放内存
(不过有个mxnet可以用GPU)
大规模数据时,算法之类的也会出现新问题。

1.1.8 Working through an example

教学例子带有查帮助之类的,是好文明(代入了新手观点)
好书 好书!

总结和问答练习

  1. Q: help?help??help有何不同?
    A: 输出help代码本身。看help的帮助。看名字含有help的东西的帮助。
    注:help()才是最常用的看帮助的命令。前面这三个都不是常用的
  2. Q: runif怎么tokenize?
    A: 机器当然是整个作为一个token,人应该runif(uniform),具体参见帮助文档。而不是runif
  3. Q: 吐槽报错
    image
    A: “找不到对象”容易让人迷惑。实际上这个包可能存在,是人忘了输引号。
    可以考虑为这种情况专门指定报错信息(就比较甜)。现在这样本来也没错,但是容易让人以为是没有这个包。
    emm,你说甜不甜还算语言本身选择吧。但是escape直接“逸出”,就太搞笑了吧