中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 【R】數據導入讀取read.table函數詳解,如何讀取不規則的數據(fill=T)

【R】數據導入讀取read.table函數詳解,如何讀取不規則的數據(fill=T)

發布時間:2020-07-08 04:04:06 來源:網絡 閱讀:4468 作者:jackwxh 欄目:開發技術


函數 read.table 是讀取矩形格子狀數據最為便利的方式。因為實際可能遇到的情況比較多,所以預設了一些函數。這些函數調用了 read.table 但改變了它的一些默認參數。

注意,read.table 不是一種有效地讀大數值矩陣的方法:見下面的 scan 函數。

一些需要考慮到問題是:

  1. 編碼問題

    如果文件中包含非-ASCII字符字段,要確保以正確的編碼方式讀取。這是在UTF-8的本地系統里面讀取Latin-1文件的一個主要問題。此時,可以如下處理

              read.table(file("file.dat", encoding="latin1"))

    注意,這在任何可以呈現Latin-1名字的本地系統里面運行。

  2. 首行問題

    我們建議你明確地設定 header 參數。按照慣例,首行只有對應列的字段而沒有行標簽對應的字段。因此,它會比余下的行少一個字段。(如果需要在 R 里面看到這一行,設置 header = TRUE。)如果要讀取的文件里面有行標簽的頭字段(可能是空的),以下面的方式讀取

              read.table("file.dat", header = TRUE, row.names = 1)

    列名字可以通過 col.names 顯式地設定;顯式設定的名字會替換首行里面的列名字(如果存在的話)。

  3. 分隔符問題

    通常,打開文件看一下就可以確定文件所使用的字段分隔符,但對于空白分割的文件,可以選擇默認的sep = "" (它能使用任何空白符作為分隔符,比如空格,制表符,換行符), sep = " " 或者 sep = "\t"。注意,分隔符的選擇會影響輸入的被引用的字符串。

    如果你有含有空字段的制表符分割的文件,一定要使用 sep = "\t"

  4. 引用 默認情況下,字符串可以被 " 或 ' 括起,并且兩種情況下,引號內部的字符都作為字符串的一部分。有效的引用字符(可能沒有)的設置由參數 quote 控制。對于sep = "\n",默認值改為 quote = ""

    如果沒有設定分隔字符,在被引號括起的字符串里面,引號需要用 C格式的逃逸方式逃逸,即在引號前面直接加反斜杠 \

    如果設定了分隔符,在被引號括起的字符串里面,按照電子表格的習慣,把引號重復兩次以達到逃逸的效果。例如

              'One string isn''t two',"one more"

    可以被下面的命令讀取

              read.table("testfile", sep = ",")

    這在默認分隔符的文件里面不起作用。

  5. 缺損值 默認情況下,文件是假定用 NA 表示缺損值,但是,這可以通過參數 na.strings 改變。參數 na.strings 是一個可以包括一個或多個缺損值得字符描述方式的向量。

    數值列的空字段也被看作是缺損值。

    在數值列,值 NaNInf 和 -Inf 都可以被接受的。

  6. 尾部空字段省略的行

    從一個電子表格中導出的文件通常會把拖尾的空字段(包括?塹姆指舴? 忽略掉。為了讀取這樣的文件,必須設置參數 fill = TRUE

  7. 字符字段中的空白

    如果設定了分隔符,字符字段起始和收尾處的空白會作為字段一部分看待的。為了去掉這些空白,可以使用參數 strip.white = TRUE

  8. 空白行

    默認情況下,read.table 忽略空白行。這可以通過設置 blank.lines.skip = FALSE 來改變。但這個參數只有在和 fill = TRUE 共同使用時才有效。這時,可能是用空白行表明規則數據中的缺損樣本。

  9. 變量的類型

    除非你采取特別的行動,read.table 將會為數據框的每個變量選擇一個合適的類型。如果字段沒有缺損以及不能直接轉換,它會按 logical, integer, numeric 和complex 的順序依次判斷字段類型。如果所有這些類型都失敗了,變量會轉變成因子。

    參數 colClasses 和 as.is 提供了很大的控制權。 as.is 會 抑制字符向量轉換成因子(僅僅這個功能)。 colClasses運行為輸入中的每個列設置需要的類型。

    注意,colClasses 和 as.is 對 列專用,而不是個變量。因此,它對行標簽列也同樣適用(如果有的話)。

  10. 注釋

    默認情況下,read.table 用 # 作為注釋標識字符。如果碰到該字符(除了在被引用的字符串內),該行中隨后的內容將會被忽略。只含有空白和注釋的行被當作空白行。

    如果確認數據文件中沒有注釋內容,用 comment.char = "" 會比較安全 (也可能讓速度比較快)。

  11. 逃逸

    許多操作系統有在文本文件中用反斜杠作為逃逸標識字符的習慣,但是Windows系統是個例外(在路徑名中使用反斜杠)。在 R 里面,用戶可以自行設定這種習慣是否用于數據文件。

    read.table 和 scan 都有一個邏輯參數 allowEscapes。從 R 2.2.0 開始,該參數默認為否,而且反斜杠是唯一被解釋為逃逸引用符的字符(在前面描述的環境中)。如果該參數設為是,以C形式的逃逸規則解釋,也就是控制符如 \a, \b, \f, \n, \r, \t, \v,八進制和十六進制如 \040 和 \0x2A 一樣描述。任何其它逃逸字符都看著是自己,包括反斜杠。

常用函數 read.csv 和 read.delim 為 read.table 設定參數以符合英語語系本地系統中電子表格導出的CSV和制表符分割的文件。這兩個函數對應的變種 read.csv2 和read.delim2 是針對在逗號作為小數點的國家使用時設計的。

如果 read.table 的可選項設置不正確,錯誤信息通常以下面的形式顯示

     Error in scan(file = file, what = what, sep = sep, :
             line 1 did not have 5 elements

或者

     Error in read.table("files.dat", header = TRUE) :
             more columns than column names

這些信息可能足以找到問題所在,但是輔助函數 count.fields 可以進一步的深入研究問題所在。

讀大的數據格子(data grid)時,效率最重要。設定 comment.char = "",以原子向量類型(邏輯型,整型,數值型,復數型,字符型或原味型)設置每列的 colClasses ,給定需要讀入的行數 nrows (適當地高估一點比不設置這個參數好)等措施會提高效率。

 

 【R】數據導入讀取read.table函數詳解,如何讀取不規則的數據(fill=T)


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仙游县| 同仁县| 永善县| 清流县| 沅陵县| 林州市| 无锡市| 同仁县| 义马市| 呼图壁县| 资阳市| 乾安县| 博客| 嘉兴市| 盐津县| 中超| 简阳市| 岢岚县| 宝兴县| 伊宁县| 页游| 定陶县| 新化县| 广安市| 兰坪| 孟村| 霸州市| 赤城县| 宣化县| 澳门| 革吉县| 凭祥市| 固始县| 曲沃县| 前郭尔| 周宁县| 台南县| 郴州市| 门头沟区| 广汉市| 清水河县|