# 设置随机种子
set.seed(101)
# 开始
<-rnorm(1000) # 第1步
n1<-abs(n1)*50 # 第2步
n2<-matrix(n2,ncol = 100) # 第3步
n3<-round(rowMeans(n3)) # 第4步
n4hist(n4) # 第5步
Tips
管道操作%>%
为什么R要这样写代码?%>%
(pip operator)到底什么意思? 参考R语言高效的管道操作magrittr | 粉丝日志 (fens.me)
%>%
看我代码中频繁出现, 这个操作符只有在加载magrittr
后才能用。
我们先看一个简单的程序
- 取1000个随机数符合,符合正态分布。
- 求这个1000个数的绝对值,同时乘以50。
- 把结果组成一个100*100列的方阵。
- 计算方阵中每行的均值,并四舍五入保留到整数。
- 画出直方图。
上面的代码写法是,每一行实现一个条件,但中间多了不少的临时变量。这无疑额外创建了很多没用的变量,对计算机来讲,就是垃圾变量占用内存,对于设计者来讲,看起来眼花。
想一想,还有没有其他写法?
我们看看下面这个,这是不同的嵌套,一层一层,将5步,一句语法实现。
set.seed(101)
hist(round(rowMeans(matrix(abs(rnorm(1000))*50,ncol=100))))
为了让代码读起来更像人话,我们就用到%>%
,避免了创建一些无意义的中间变量,又看起来步骤分明。从里到外,一步一步,就像管道一样。
# 加载magrittr
library(magrittr)
# 设置随机种子
set.seed(101)
# 开始
rnorm(1000) %>%
%>% `*` (50) %>%
abs matrix(ncol=100) %>%
%>% round %>%
rowMeans hist
看起来好爽。每一步都很清晰。
为什么要用Quarto 或R Markdown
Quarto 或 R Markdown 是学术写作的未来。因为他们既可以使用markdown语法,又可以运行代码,输出结果。R Markdown曾被认为是可以运行代码的Markdown。
你可以试试。
plot(cars) # 可以运行代码,输出结果
和
plot(cars) # 只是代码,并不能运行,肯定也不能输出结果
想了解更多,可以看看我在B站具体的解释。
https://www.bilibili.com/video/BV1aP411A7TV/
如何创建Quarto和R Markdown文件
https://www.bilibili.com/video/BV14m4y1c7wM/
R的一些基础操作
R的工作目录
R的默认工作目录在所有操作系统里一般都是家目录里。可以先查看一下
getwd()
[1] "G:/personnal/medai-ds"
“/home/rsliang/Demo”,这是我的电脑上默认的工作目录。在这个目录下,你放了任何文件,都可以直接使用相对路径
比如这时候你可以直接用相对路径调用数据集”dataset/***.csv”。
read.csv("dataset/stroke.csv") %>%
head()
假设我的工作目录不是这里呢?比如我把工作目录换了,因为我这个目录下面没有dataset文件夹,更没有stroke.csv文件,所以自然会报错,无法执行。
setwd("/home/rsliang/") #若设定工作目录为这个
# read.csv("dataset/stroke.csv") 如果运行这条语句会报错
另外还有个办法,也比较有效,那就是打开R的项目(project)文件,后缀名为.Rproj的文件,打开以后,就默认这个所在的文件夹就是根目录,可以直接在右侧files选项卡,会显示当前项目的内容。