zoukankan      html  css  js  c++  java
  • R(4) read/write

    write.table()


    • 数据导入导出最常用的方式是使用read.table()函数和write.table()处理CSV文件的导入导出,read.table()和write.table()可以处理包含行、列标签的数据框
    • Usage: write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",   eol = " ", na = "NA", dec = ".", row.names = TRUE,                            col.names = TRUE, qmethod = c("escape", "double"),  fileEncoding = "")
      1.  x: 要写入的对象的名称
      2. file: 文件名(缺省时对象直接被“写”在屏幕上)
      3. append: 是否为增量写入
      4. quote: 一个逻辑型或者数值型向量:如果为TRUE,则字符型变量和因子写在双引 号""中;若quote是数值型向量则代表将欲写在""中的那些列的列标。(两种 情况下变量名都会被写在""中;若quote = FALSE则变量名不包含在双引号中)
      5. sep: 文件中的字段分隔符
      6. eol: 指定行尾符,默认为' '
      7. na: 表示缺失数据的字符
      8. dec: 用来表示小数点的字符
      9. row.names: 一个逻辑值,决定行名是否写入文件;或指定要作为行名写入文件的字符型 向量
      10. col.names: 一个逻辑值(决定列名是否写入文件);或指定一个要作为列名写入文件中 的字符型向量
      11. qmethod: 若quote=TRUE,则此参数用来指定字符型变量中的双引号"如何处理: 若参数值为"escape" (或者"e",缺省)每个"都用"替换;若值为"d"则每 个"用""替换
    • 类似的,write.table()也提供了一些变体:write.csv(…)、write.csv2(…)
      > remove(list = ls())
      > space_path <- c("E:\RML\")
      > file_path <- paste0(space_path,"C45.csv")
      > data1 <- data.frame(id=c("1","2","3"),name=c("张三","李四","王五"))
      > write.table(x= data1)
      "id" "name"
      "1" "1" "张三"
      "2" "2" "李四"
      "3" "3" "王五"
      > write.table(x= data1,file = file_path)

    read.table()  


    •  Usage: read.table(file, header = FALSE, sep = "", quote = ""'",
                           col.names, na.strings = "NA", colClasses = NA, fill = !blank.lines.skip,
                            strip.white = FALSE, blank.lines.skip = TRUE,comment.char = "#",
                           fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
      1. file : 要处理的文件。可以用字符串指定文件名,也可以使用函数,如:file('file.dat',encoding='utf-8')  
      2. header:首行是否为字段名。如果不指定,read.table()会根据行标签进行判断,即如果首行比下面的行少一列,就是header行
      3. col.names: 如果指定,则用指定的名称替代首行中的列名称
      4. sep:指定分隔符。默认为空白符(空格,制表符,换行符等)。可以指定为' ', ' '等
      5. quote:指定字符串分隔符,如" 或 '
      6. na.strings: 指定缺损值。默认为NA
      7. fill :文件中是否忽略了行尾字段。如果有,必须指定为 TRUE
      8. strip.white:是否去除字符串字段首尾的空白
      9. blank.lines.skip:是否忽略空白行,默认为TRUE。如果要指定为FALSE,需要同时指定 fill = TRUE 才有效
      10. colClasses:指定每个列的数据类型
      11. comment.char : 注释符。默认使用#作为注释符号,如果文件中没有注释,指定comment.char = "" 会比较安全
    •  为了使用方便,read.table()函数还提供了一些变体,这些变体为read.table()的一些参数设定了默认值,如:read.csv、read.csv2、read.delim、read.delim2
      > tmp <- read.table(file = file_path)
      > library(DT)
      > datatable(tmp)
    •  

    保存为R格式文件


    • 保存及读取代码示例
      > save(data1,file = "demo.rda")
      > 
      > remove(list = ls())
      > load(file = "demo.rda")
      > print(data1)
        id name
      1  1 张三
      2  2 李四
      3  3 王五

    读取Excel 


    • 利用剪切板:选择excel数据,再用(CTRL+C)复制。在R中键入命令:
      > read.delim("clipboard")
        北汽新能源.ES210 X1442 X617 X42.79 X524 X36.34 X559
      1 北汽新能源-EU260  1641 1308  79.71 1278  77.88 1268
      2 北汽新能源-EV150  1377  822  59.69  775  56.28  814
      3 北汽新能源-EV160  1515  230  15.18  486  32.08  652
    • 将文件保存为csv文件,通过write.table读入
    • 加载xlsx包导入excel数据
      #install.packages("xlsx")
      Sys.setlocale(locale = "chinese")
      library(rJava)
      library(xlsxjars)
      library(xlsx)
      read.xlsx(file = "E:\RML\demo.xlsx",sheetName ="Sheet1",encoding = "utf-8")
    •  

    writelines


    • Usage:writeLines(text, con = stdout(), sep = " ", useBytes = FALSE)
    • 示例代码:
      mytxt <- c("my valiate writelines function ,this is a demo!")
      writeLines(text = mytxt,con = "E:\RML\demo.html",useBytes = TRUE)

    readlines


    • Usage: readLines(con = stdin(), n = -1L, ok = TRUE, warn = TRUE,encoding = "unknown", skipNul = FALSE)
      > readLines(con = "E:\RML\demo.html",encoding = "UTF-8")
      [1] "my valiate writelines function ,this is a demo!"
    •  读取网页示例
      > rows<-readLines("http://news.ifeng.com/mainland/special/ptxyy/",encoding = "UTF-8",warn=FALSE)
      > rows[123:123];
      [1] "    ['上海','上海市闵行区中医院<br/>上海华美美莱整形医院<br/>上海万众医院<br/>上海安真医院<br/>上海福华医院<br/>上海玛丽女子医院<br/>上海真爱女子医院<br/>上海心脏病医院<br/>上海远大心胸医院<br/>上海仁爱医院<br/>上海天大医疗美容医院<br/>上海沪申五官科医院<br/>上海博爱医院<br/>上海新虹桥医院<br/>上海九龙男子医院<br/>上海城市女子医院<br/>上海西郊骨科医院<br/>上海真美妇科医院<br/>上海南浦妇科医院<br/>上海虹桥医院<br/>上海健桥医院<br/>上海博爱医院<br/>上海长江医院<br/>解放军411医院<br/>上海阳光中医医院<br/>上海英港泌尿外科医院<br/>上海阿波罗男子医院<br/>上海玫瑰女子医院<br/>上海康新医院<br/>上海圣爱医院<br/>上海同德医院<br/>上海安平医院<br/>江东泌尿外科医院<br/>上海九州泌尿医院<br/>上海青城医院<br/>上海博大医院<br/>上海中亚医院','38'],"

     readr包


    • readr用来把不同格式的数据读入R中,通过比传统方法快十倍的速度。在此,字符型变量不会被转化为因子型变量(所 以不再有stringAsFactors = FALSE命令)。这个包可以代替传统的R基础函数read.csv()和read.table()。它可以用来读入以下格式的数据:
      1. 分隔符文件:read_delim(),read_csv(),read_tsv()和read_csv2()
      2. 固定宽度文件:read_fwf()和read_table()
      3. 网络日志文件:read_log()
  • 相关阅读:
    MySQL for OPS 02:SQL 基础
    Samba:基于公网 IP 的服务访问
    MySQL for OPS 01:简介 / 安装初始化 / 用户授权管理
    Samba:打造企业级授权文件共享服务器
    嵌入式web server——Goahead移植要点
    libConfuse的使用
    【工具篇】notepad++
    使用sprintf打印float并控制小数位数时引起的问题
    【工具篇】source Insight
    【工具篇】xshell
  • 原文地址:https://www.cnblogs.com/tgzhu/p/6746799.html
Copyright © 2011-2022 走看看