zoukankan      html  css  js  c++  java
  • R语言数据文件读写

    R语言数据储存与读取

    1 首先用getwd() 获得当前目录,用setwd("C:/data")设定当前目录

    2 数据保存

    创建数据框d

    >d <- data.frame(obs = c(1, 2, 3), treat = c("A", "B", "A"), weight = c(2.3, NA, 9))

    2.1 保存为简单文本

    Usage
    write.table(x, file = "", append = FALSE, quote = TRUE, sep = " ",
    eol = "\n", na = "NA", dec = ".", row.names = TRUE,
    col.names = TRUE, qmethod = c("escape", "double"),
    fileEncoding = "")

    >write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F) # 空格分隔

    >write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F, sep="\t")  # tab 分隔的文件

    2.2 保存为逗号分割文本

    >write.csv(d, file = "c:/data/foo.csv", row.names = F, quote = F)

    2.3 保存为R格式文件

    >save(d, file = "c:/data/foo.Rdata")

    2.4 保存工作空间镜像

    >save.image( ) = save(list =ls(all=TRUE), file=".RData")

    3 数据读取

    读取函数主要有:read.table( ), scan( ) ,read.fwf( ),readLines().

    3.1 用 read.table( ) 读 "c:\data” 下houses.dat

    >options(stringsAsFactors=FALSE)

    >setwd("C:/data"); HousePrice <- read.table(file="houses.dat")

    如果明确数据第一行做表头,则使用header选项

    >HousePrice <- read.table("houses.dat", header=TRUE)

    options(stringsAsFactors=FALSE)
    Exp <- read.table(file="cer.v05.csv",  header=TRUE,  sep=",", row.names= 1)

    read.table( ) 变形有: read.csv( ),read.csv2( ), read.delim( ), read.delim2( ).前两读取逗号分割数据,后两个读取其他分割符数据。

    3.2  用scan( ) 比read.table( ) 更灵活。

    但要指定 变量类型:如:C:\data\data.dat:

    M 65 168

    M 70 172

    F 54 156

    F 58 163

    >mydata <- scan("data.dat", what = list("", 0, 0))

    >mydata <- scan("data.dat", what = list(Sex="", Weight=0, Height=0))

    3.3 用read.fwf( )读取文件中一些固定宽度数据

    如:C:\data\data.txt:

    A1.501.2

    A1.551.3

    B1.601.4

    >mydata <- read.fwf("data.txt", widths=c(1, 4, 3), col.names=c("X","Y","Z"))

    4 excel格式数据读取

    4.1 利用剪切板

    选择excel数据,再用(CTRL+C)复制。在R中键入命令:

    >mydata <- read.delim("clipboard")

    4.2 使用程序包 RODBC.

    如: c:\data\body.xls

    Sex Weight Height

    M 65 168

    M 70 172

    F 54 156

    F 58 163

    > library(RODBC)

    > z <- odbcConnectExcel("c:/data/body.xls")

    > foo <- sqlFetch(z, "Sheet1")

    > close(z)

    To an Excel Spreadsheet 保存为Excel文件:

    library(xlsx)    #   注意: 软件包需要安装
    write.xlsx(mydata, "c:/mydata.xlsx") #   参考: https://danganothererror.wordpress.com/2012/02/12/write-data-frame-to-excel-file/

    The WriteXLS function from the WriteXLS package (link: http://cran.r-project.org/web/packages/WriteXLS/index.html) can write data to Excel.

    Alternatively, write.xlsx from the xlsx package (link: http://cran.r-project.org/web/packages/xlsx/) will also work.

    注意:

    1 writeLines 会在最后一行/或者每行末尾加一个换行符

    # fileConn<-file(output_fasta)
    # writeLines(mystr, fileConn)
    # close(fileConn)

    fileConn<-file("output.txt")
    writeLines(c("Hello","World"), fileConn)
    close(fileConn)


    txt <- "Hallo\nWorld"
    writeLines(txt, "outfile.txt")
    

    or

    txt <- c("Hallo", "World")
    writeLines(txt, "outfile.txt")
    
     

    2 另外一个写文件的方法是sink,不会在行末加换行符

    sink(output_fasta)
    cat(mystr)
    sink()

    sink("outfile.txt")
    cat("hello")
    cat("\n")
    cat("world")
    sink()


    > cat("Hello",file="outfile.txt",sep="\n")
    > cat("World",file="outfile.txt",append=TRUE)

    file.show("outfile.txt")

    line="blah text blah blah etc etc"
    write(line,file="myfile",append=TRUE) 

    write is a wrapper for cat, which gives further details on the format used.

    save for writing any R objects, write.table for data frames, and scan for reading data.

    readChar(con, nchars, useBytes = FALSE)

    writeChar(object, con, nchars = nchar(object, type = "chars"), eos = "", useBytes = FALSE)

    # read
    fileName <- 'foo.txt'
    oldstring<-readChar(fileName, file.info(fileName)$size)

    R语言逐行读取文件(一行一行读取文件):
    con <- file("path_file_name", "r")
    lineCnt = 0
    while(1){
        oneline = readLines(con, n = 1)
        if(length(oneline) == 0){
            break
        }
        lineCnt = lineCnt+1
    }
    close(con)

    R语言读取文件

    con <- file(filename, "r")
    genes = readLines(con, n = -1)
    close(con)

    REF:

    http://www.statmethods.net/input/exportingdata.html

    http://hi.baidu.com/wuyu466/item/d46edcd96c2838e955347f2c

  • 相关阅读:
    sqlserver数据导入问题:报错“对COM组件的调用返回了错误HRESULT E_FAIL”
    删除文件夹提示”该项目不在请确认该项目位置“
    delphi三层DCOM架构
    sqlserver 将店铺表转换成可以用in查询的字符串
    Delphi如何获取一个字符串再另一个字符串中最后一次出现的位置
    c# 通过地址下载流然后保存文件到本地
    使用SQL语句清空数据库所有表的数据
    SqlServer 查询的时候过滤条件有参数导致速度很慢的问题-参数嗅探
    delphi和C# 保存exe文件到数据库
    DELPHI 多线程(TThread类的实现)
  • 原文地址:https://www.cnblogs.com/emanlee/p/2802352.html
Copyright © 2011-2022 走看看