R 语言常用命令

徐锋 / 2019-12-28

Email: xufeng34@163.com


环境配置:

  1. 坐标轴刻度朝内
    • par(mar=c(3,4,0.1,3)+0.1,mgp=c(2,0.5,0),tck=0.01)
  2. 默认参数
    • op <- par(no.readonly=TRUE)
  3. 图像尺寸和边界
    • mar 图形的内边界, 即外边界与坐标轴之间的距离. 通常设为(4,4,2,1)
    • oma 图形的外边界, 通常设为(0,0,0,0)
    • mgp=c(3,1,0) 坐标轴及刻度与边界的距离
  4. 文本属性(用来指定字号、字体、字样)
    • cex.axis:坐标轴刻度文字的缩放倍数
    • cex.lab:坐标轴标签(名称)的缩放倍数
    • cex.main:标题的缩放倍数
    • cex.sub:副标题的缩放倍数
    • font:整数.用于指定字体样式.1常规、2粗体、3斜体、4粗斜体
    • family: 全局字体,特指字体的类型,如宋体还是楷体par(family="GB1")
  5. 坐标属性
    • axes=FALSE 将禁用全部坐标轴,框架和刻度全部没有了
    • xaxt="n" 禁用x轴的刻度线
    • yaxt="n" 禁用y轴的刻度线
    • xlim x坐标轴的范围,只写出最小值和最大值
    • ylim y坐标轴的范围,只写出最小值和最大值
  6. 画坐标轴函数axis
    • at:一个数值向量,表示需要绘制刻度线的位置
    • labels:一个字符型向量(也可以是数值型),表示刻度线旁边的文字标签(刻度值),如果整个不写,则直接使用at的值
    • col:线条和刻度的颜色
    • lty:线条类型
    • las:标签的字体是否平行(=0)或者垂直(=2)坐标轴
    • tck:刻度线的长度(默认值-0.01,负值表示刻度在图形外,正值表示刻度在图形内侧)
  7. 小数点显示格式
    • options(digits = 7) # 控制要打印数值的位数(最大只能到22)
    • options(scipen = 100) # 平时常用的数值或科学计 数法输出,此处用于设置显示的位数
  8. format 函数
    • # format 主要是为了输出一个统一的格式. # format 函数的作用是使x中各元素统一成一样的格式,具体来说是将它们统一为相同的宽度,不足的用空格补齐,这时数字会自动转化为字符.
    • format(c(6.0, 13.1), digits = 2) #保留两位有效数字 format(1:10) # 注意数字1-9前面的空格. format(2^31-1, scientific = TRUE) #用科学计数法表示该数值,如果想显示全的话可以把scientific设置为FALSE
  9. signif 函数
    • signif 主要是用于指定参数的有效数字的四舍五入.
    • x2 = c(0.03141593,3.14159265,314.15926536,31415.92653590,3141592.65358979)
    • signif(x2, 3)

      round(x2, 3)

    • 是保留小数点后三位有效数字. 除了保留小数位数,还有一种常用的数字格式是将整数统一为相同的位数,不足的在前面加0,如将1补为001,这时需使用sprintf(fmt, ...)函数.sprintf函数取自C语言,参数fmt即最终输出的格式.sprintf(fmt, x)意味着将x按fmt中给出的格式插入到fmt中%符号所在的位置.
    • sprintf("%s is %f feet tall\n", "Sven", 7.1) # 上式意味着将Sven插入到%s is %f feet tall\n这句话的%s处,将7.1插入到%f处,其中后缀s和f代表了数据格式是字符型和双精度数字.如果是整数型数字,可用d, i, o, x, X做后缀,其中o代表转化为八进制整数格式,x和X代表转化为十六进制整数格式. # 将1补为001可以使用sprintf(‘%03d’, 1)实现. sprintf('%03d', 1)
  10. 读取 UTF-8 数据文件
    • GBA_txt <- scan('mytxt.txt',sep='\n',what='',encoding="GBK")
    • write.csv(dfseg,"mycsv.csv",row.names = FALSE,fileEncoding = "UTF-8")
    • GBATXTT=read.csv("mycsv.csv",fileEncoding = "UTF-8")
  11. 保存图片
    • setEPS()

      postscript("myFigure.eps",width=2.756*4,height=1.870*4)

      plot(rnorm(100), main="Hey Some Data")

      dev.off()

    • pdf(file="myFigure.pdf",width=2.756*4,height=1.870*4)

      plot_chap1_1b()

      dev.off()

  12. 日期操作
    • 提取工作日

      Sindex=seq.Date(from=as.Date("2010/01/01",format="%Y/%m/%d"),by="day",length.out=10)

      Sindex[which(weekdays(Sindex) %in% c("星期一","星期二","星期三","星期四","星期五"))]

  13. 替换函数 bquote quote substitute函数
    • require(graphics)

      a <- 2

      bquote(a == a)

      bquote(a == a)

      quote(a == a)

      bquote(a == .(a))

      substitute(a == A, list(A = a))

      plot(1:10, a*(1:10), main = bquote(a == .(a)))

      ## to set a function default arg

      default <- 1

      bquote( function(x, y = .(default)) x+y )

  14. 画直线
    • 1、函数lines()其作用是在已有图上加线,命令为lines(x,y),其功能相当于plot(x,y,type="1") 两点连线

      lines(c(0.1,0.1),c(0,0.1))

    • 2、函数abline()可以在图上加直线,其使用方法有四种格式。

      # 2.1 abline(a,b) 表示画一条y = a + bx的直线

      a <- 4; b <- 2

      abline(a,b)

      # 2.2 abline(h=y) 表示画出一条过所有点得水平直线

      y = 5

      abline(h = y)

      # 2.3 abline(v=x) 表示画出一条过所有点的竖直直线

      abline(v = y)

      # 2.4 abline(lm.obj) 表示绘出线性模型得到的线性方程

  15. 画直角坐标系
    • par(mar=c(1,1,1,1)+0.1,cex=0.8)

      plot(0,0,type = 'l', axes=FALSE,xlab = '',ylab = '', xlim = c(-10,11), ylim = c(-10,11))

      arrows(x0 = -11, y0 = 0, x1 = 11, y1 = 0, length = 0.1)

      arrows(y0 = -11, x0 = 0, y1 = 11, x1 = 0, length = 0.1)

      for(i in seq(-10,10,by=1)){

        x = c(i,i);y = c(0,0.25)

        lines(x,y)

        if(i != 0) text(x[1],-0.5,i,cex = 0.6)

      }

      for(i in seq(-10,10,by=1)){

        x = c(0,0.25); y = c(i,i)

        lines(x,y)

        if(i != 0) text(-0.5,y[1],i,cex = 0.6)

      }

      text(-0.25,-0.5,'0',cex = 0.6)

  16. 铺抓错误信息
    • code = "aa>1"

      x <- tryCatch(eval(parse(text = code)),error = function(e) e)

      if(length(class(x)) > 1){

        if(class(x)[2]=="error"){ cat(paste0(x)) }

      }

      x

  17. 直方图加密度曲线
    • score <- rnorm(n = 1000, m = 80, sd = 20)

      hist(score, freq=FALSE, xlab="Score",main="Distribution of score",

        col="lightgreen", xlim=c(0,150), ylim=c(0, 0.02))

      curve(dnorm(x, mean=mean(score), sd=sd(score)),

        add=TRUE, col="darkblue", lwd=2)