R語言的數據輸入

既然瞭解了R語言的基本數據類型,那麼如何將龐大的數據送入R語言進行處理呢?送入的數據又是如何在R語言中進行存儲的呢?處理這些數據的方法又有那些呢?下面咱們一塊兒來探討一下。數據庫

首先,數據輸入最直接最直觀的方法就是鍵盤輸入,在上面幾篇都已經講到,利用c建立向量,利用matrix建立矩陣,利用data.frame建立數據框等,可是咱們處理的數據每每比較多,鍵盤輸入在面對如此龐大的數據時顯然不現實,固然你能夠花費好幾天來輸入數據並且保證不出錯除外,並且待處理的通常都存儲在Excel,網頁,數據庫其餘中介中,所以:如何大批量無差錯高效率地讀取數據就成爲R語言首先要解決的問題。函數

第一:若是本身學習寫代碼,加載R語言中自己自帶的數據包cars等,加載的方法跟其餘包相同,具體代碼以下:學習

> install.packages("car")
> library(cars)

第二:讀取外部數據通常用read.***( ),***表明要讀取的文件類型,下面詳細解釋了每種類型的文件的讀取:xml

read.table(file, header = FALSE, sep = "", quote = "\"'",
           dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
           row.names, col.names, as.is = !stringsAsFactors,
           na.strings = "NA", colClasses = NA, nrows = -1,
           skip = 0, check.names = TRUE, fill = !blank.lines.skip,
           strip.white = FALSE, blank.lines.skip = TRUE,
           comment.char = "#",
           allowEscapes = FALSE, flush = FALSE,
           stringsAsFactors = default.stringsAsFactors(),
           fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
read.csv(file, header = TRUE, sep = ",", quote = "\"",
         dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = "\"",
          dec = ",", fill = TRUE, comment.char = "", ...)
read.delim(file, header = TRUE, sep = "\t", quote = "\"",
           dec = ".", fill = TRUE, comment.char = "", ...)
read.delim2(file, header = TRUE, sep = "\t", quote = "\"",
            dec = ",", fill = TRUE, comment.char = "", ...)

其中:blog

參數file:表明要讀去的文件名以及文件路徑,若是當前工做路徑就是須要讀取的文件的存儲路徑,那麼能夠直接寫文件名,記得要用雙引號括起來。那麼如何設置工做路徑呢?首先咱們查看當前的工做路徑用getwd( )函數,設置工做路徑的話用setwd(" 工做路徑")函數,注意,在設置工做路徑時,須要把路徑中全部的 "\" 改爲 「\\」。具體操做以下代碼:ip

> getwd()    #查看當前工做路徑
[1] "E:/趙志博/R"
> setwd("E:\趙志博") #錯誤的設置方式
Error: '\? is an unrecognized escape in character string starting ""E:\?
> setwd("E:\\趙志博") #正確的設置方式
> getwd()    #查看設置後的工做路徑
[1] "E:/趙志博"

當工做路徑設置完成後,即可以直接讀取工做路徑裏面的文件而不須要加文件的存儲位置。如代碼所示,當前工做路徑爲"E:/趙志博",在該路徑下建立了文件「123.txt」,能夠直接讀取文件,可是在「D:/」建立了新的文件「456.txt」,便不能直接讀取,須要加上完整的文件路徑,路徑一樣須要將"\" 改爲 「\\」。get

 mydata <- read.table("123.txt",sep = ',')
> mydata
  V1 V2 V3
1  1  2  3
2  4  5  6
3  7  8  9
> mydataD <- read.table("456.txt",sep = ',')
Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
In file(file, "rt") : cannot open file '456.txt': No such file or directory
> mydataD <- read.table("D:\\456.txt",sep = ',')
> mydataD
  V1 V2 V3
1  1  2  3
2  4  5  6
3  7  8  9

 每次都要設置路徑,對有些場合來講未免太過麻煩,所以R提供了一種能夠直接選擇文件位置的函數,read.***(file.choose()),例如讀取txt數據:string

mydatachoose <- read.table(file.choose()) #自由選取數據來讀取,可是file.choose( )的參數好像沒有

參數header:主要肯定須要讀取的文件是否本身已經設置了列名,默認值爲FALSE。這個須要解釋一下:上節咱們已經講過data.frame類型,那麼read.***( )的返回值也是數據框類型,天然是按列填充的數據框格式,所以列名就顯得尤其重要,至關於Excel的表頭部分,行號系統會根據1~N的順序排好,固然也能夠修改。it

參數sep:主要肯定須要讀取的文件中,各個字符的分割方式,通常有空格分割,逗號分割等,肯定了分割方式,才能保證將數據讀取爲本身想要的樣子。io

常見用的參數就是這些,其餘的原理都差很少,若是有須要自行學習。

1.txt文件:mydata <- read.table( )

2.Excel格式數據:mydata <- read.xlsx( ),在使用這個函數以前,須要先安裝xlsx包,安裝方法跟其餘包的安裝方法一致。通常來講,讀取xlsx文件速度較慢,一般將Excel文件保存爲csv格式,而後再進行讀取 mydata <- read.csv( )

3.XML數據:讀取XML數據前先要載入XML包,而後使用 mydata <- xmlRoot(xmlTreeParse("***.xml"))來讀取

關於數據的讀取就先介紹到這裏,其餘有用的着的再單獨學習。

相關文章
相關標籤/搜索