R語言的數據輸入深入講解

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

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

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

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

第二:讀取外部數據一般用read.***( ),***代表要讀取的文件類型,下面詳細解釋瞭每種類型的文件的讀取:

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 = "", ...)

其中:

參數file:代表要讀去的文件名以及文件路徑,如果當前工作路徑就是需要讀取的文件的存儲路徑,那麼可以直接寫文件名,記得要用雙引號括起來。那麼如何設置工作路徑呢?首先我們查看當前的工作路徑用getwd( )函數,設置工作路徑的話用setwd(” 工作路徑”)函數,註意,在設置工作路徑時,需要把路徑中所有的 “\” 改成 “\\”。具體操作如下代碼:

> 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”,便不能直接讀取,需要加上完整的文件路徑,路徑同樣需要將”\” 改成 “\\”。

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數據:

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

參數header:主要確定需要讀取的文件是否自己已經設置瞭列名,默認值為FALSE。這個需要解釋一下:上節我們已經講過data.frame類型,那麼read.***( )的返回值也是數據框類型,自然是按列填充的數據框格式,因此列名就顯得尤為重要,相當於Excel的表頭部分,行號系統會根據1~N的順序排好,當然也可以修改。

參數sep:主要確定需要讀取的文件中,各個字符的分割方式,一般有空格分割,逗號分割等,確定瞭分割方式,才能保證將數據讀取為自己想要的樣子。

常見用的參數就是這些,其他的原理都差不多,如果有需要自行學習。

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”))來讀取

關於數據的讀取就先介紹到這裡,其他有用的著的再單獨學習。

到此這篇關於R語言的數據輸入深入講解的文章就介紹到這瞭,更多相關R語言的數據輸入內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: