在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
从2018年秋季(大二上学期)开始接触R语言,曾在2019年寒假读过一遍本书的第一版,感觉受益匪浅,之后遇到问题也曾回头来查阅这本书,前几天刚学习过Simulink,趁现在有空再来温习这本书,回顾一下代码和各种命令,简单记录。 虽然感觉R的功能和用途不如MATLAB广泛,但是需要派上用场的时候如果能熟练地运用真的是很好的体验。
但是它们还是有很多相似之处的:
随着个人电脑将计算变得廉价且便捷,现代数据分析的方式发生了变化。与过去一次性设置好完整的数据分析过程不同,现在这个过程已经变得高度交互化,每一阶段的输出都可以充当下一阶段的输入。
R也是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护。
1.2 R的使用1.2.1 获取帮助对于R来说,对象可以是任何东西(数据、函数、图形、分析结果,等等)。
使用函数c()以向量的形式输入数据,用mean()、sd()和cor()函数可以分别获得变量的均值和标准差,以及变量和变量之间的相关度。
函数q()将结束会话并允许你退出R,或者在RStudio中使用Ctrl+Q。
例如:
> library(car) 载入需要的程辑包:carData Warning message: 程辑包‘car’是用R版本3.5.2 来建造的 > data()
1.2.2 工作空间工作空间(workspace)就是当前R的工作环境,它存储着所有用户定义的对象(向量、矩阵、函数、数据框、列表)。
注意R中使用正斜杠/分隔目录而不是反斜杠\。R将反斜杠(\)作为一个转义符。
注意:函数setwd()不会自动创建一个不存在的目录。如果必要的话,可以使用函数dir.create()来创建新目录,然后使用setwd()将工作目录指向这个新目录。
如上图所示,修改目录到桌面后,控制台(Console)上方显示当前目录。注:在RStudio的菜单栏Tools→Global Options→General的Default working directory可以修改默认工作目录。
类似于Linux的操作命令。
类似于MATLAB中的clear。
> x=rnorm(3) > x [1] -0.1284972 0.1003854 -1.8987649 > options(digits=3) > x [1] -0.128 0.100 -1.899
或者直接选择用RStudio打开.RData文件。
1.2.3 输入和输出启动R后将默认开始一个交互式的会话,从键盘接受输入并从屏幕进行输出。不过你也可以处理写在一个脚本文件(一个包含了R语句的文件)中的命令集并直接将结果输出到多类目标中。
例如:
sink("sink-examp.txt") i <- 1:10 outer(i, i, "*") sink() 上述代码将输出保存到sink-examp.txt文件中。
注:直接在R脚本中写入sink、貌似不起作用(比如讲上面4行放在.R文件中再source它),sink语句需要写到R脚本外,即控制台中。
Outputs the objects, concatenating the representations. cat performs much less conversion than print. cat is useful for producing output in user-defined functions. cat(... , file = "", sep = " ", fill = FALSE, labels = NULL, append = FALSE) fill:a logical or (positive) numeric controlling how the output is broken into successive lines. If FALSE (default), only newlines created explicitly by "\n" are printed. Otherwise, the output is broken into lines with print width equal to the option width if fill is TRUE, or the value of fill if this is numeric. Non-positive fill values are ignored, with a warning. labels:character vector of labels for the lines printed. Ignored if fill is FALSE. example: i<-1:10 text<-c("a","b","c","d") cat(i,file="i.txt",sep="-",fill=10,labels=text) Output:
图形输出:
例如:
i <- 1:10 bmp("ii.bmp") plot(i,i) dev.off() 以上代码将图像保存到ii.bmp中。
1.3 包包(package)可从http://cran.r-project.org/web/packages下载。
包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。计算机上存储包的目录称为库(library)。函数.libPaths()能够显示库所在的位置, 函数library()则可以显示库中有哪些包。
R自带了一系列默认包(包括base、datasets、utils、grDevices、graphics、stats以及methods),它们提供了种类繁多的默认函数和数据集。其他包可通过下载来进行安装。安装好以后,它们必须被载入到会话中才能使用。命令search()可以告诉你哪些包已加载并可使用。
> .libPaths() [1] "D:/R/R-3.5.1/library" > search() [1] ".GlobalEnv" "tools:rstudio" [3] "package:stats" "package:graphics" [5] "package:grDevices" "package:utils" [7] "package:datasets" "package:methods" [9] "Autoloads" "package:base"
1.4 批处理reference: https://blog.revolutionanalytics.com/2009/06/running-scripts-with-r-cmd-batch.html R CMD BATCH myscript.R myscript.Rout #example.R clotting <- data.frame( u = c(5,10,15,20,30,40,60,80,100), lot1 = c(118,58,42,35,27,25,21,19,18), lot2 = c(69,35,26,21,18,16,13,12,12)) cat("Model data:\n") print(clotting) warning("Model starting") obj <- glm(lot1 ~ log(u), data=clotting, family=Gamma) cat("\nEstimated parameters:\n") coef(summary(obj)) PS C:\Users\lenovo> cd Desktop PS C:\Users\lenovo\Desktop> D:\R\R-3.5.1\bin\R.exe CMD BATCH example.R example.Rout Output in example.Rout:
R version 3.5.1 (2018-07-02) -- "Feather Spray" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 (64-bit) R是自由软件,不带任何担保。 在某些条件下你可以将其自由散布。 用'license()'或'licence()'来看散布的详细条件。 R是个合作计划,有许多人为之做出了贡献. 用'contributors()'来看合作者的详细情况 用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。 用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或 用'help.start()'通过HTML浏览器来看帮助文件。 用'q()'退出R. [原来保存的工作空间已还原] > clotting <- data.frame( + u = c(5,10,15,20,30,40,60,80,100), + lot1 = c(118,58,42,35,27,25,21,19,18), + lot2 = c(69,35,26,21,18,16,13,12,12)) > cat("Model data:\n") Model data: > print(clotting) u lot1 lot2 1 5 118 69 2 10 58 35 3 15 42 26 4 20 35 21 5 30 27 18 6 40 25 16 7 60 21 13 8 80 19 12 9 100 18 12 > warning("Model starting") Warning message: Model starting > obj <- glm(lot1 ~ log(u), data=clotting, family=Gamma) > cat("\nEstimated parameters:\n") Estimated parameters: > coef(summary(obj)) Estimate Std. Error t value Pr(>|t|) (Intercept) -0.01655438 0.0009275466 -17.84749 4.279149e-07 log(u) 0.01534311 0.0004149596 36.97496 2.751191e-09 > > proc.time() 用户 系统 流逝 0.25 0.20 0.36 At the same time we can get a file with the suffix .RData. Or we can just write the following two lines to a .bat file and double-click to run it. cd C:\Users\lenovo\Desktop D:\R\R-3.5.1\bin\R.exe CMD BATCH example.R example.Rout 与上述方法不同的是,Rscript可以传入参数,其中options的选项取值是相同的。
#example.R argv<-commandArgs(TRUE) x<-as.numeric(argv[1]) y<-as.numeric(argv[2]) cat("x=",x,"\n") cat("y=",y,"\n") cat("x+y=",x+y,"\n") cat("x^y",x^y,"\n") PS C:\Users\lenovo> cd Desktop PS C:\Users\lenovo\Desktop> D:\R\R-3.5.1\bin\Rscript.exe example.R 1 2 >output.ROut Output in output.Rout: x= 1 y= 2 x+y= 3 x^y 1
1.5 结果的重用lmfit <- lm(mpg~wt, data=mtcars)
总结 |
请发表评论