R語言中的read.table()


參考資料:http://www.cnblogs.com/xianghang123/archive/2012/06/06/2538274.html

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)

 

  • file 指定讀入的文件

  • header 是否有列名(默認無)

  • seq 指定分隔符(空格、TAB、換行符、回車符)

  • quote 制定包圍字符型數據的字符。默認情況下,字符串可以被 " 或 ’ 括起,並且兩種情況下,引號內部的字符都作為字符串的一部分。有效的引用字符(可能沒有)的設置由參數 quote 控制。默認值改為 quote = “”

  • dec = “.” 指定小數點數

  • colClasses 指定列的數據類型格式

  • row.names 指定各行名稱,也可以是數字,指定某列為行名

  • col.names

  • as.is = !stringsAsFactors as.is 字符向量是否轉換成因子(僅僅這個功能),TRUE時保留為字符型

  • na.strings = “NA” 指定什么樣的字符表示值缺少

  • colClasses = NA colClasses運行為輸入中的每個列設置需要的類型。注意,colClasses 和 as.is 對每 列專用,而不是每個變量。因此,它對行標簽列也同樣適用(如果有的話)。

  • nrows = -1 最大讀入行數,即讀入前多少行,“-1”表示都讀入

  • skip = 0 跳過文件的前n行(skip = n)

  • check.names = TRUE # 檢查變量名在R中是否有效

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

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

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

  • comment.char = “#” 默認情況下,read.table 用 # 作為注釋標識字符。如果碰到該字符(除了在被引用的字符串內),該行中隨后的內容將會被忽略。只含有空白和注釋的行被當作空白行。如果確認數據文件中沒有注釋內容,用 comment.char = “” 會比較安全 (也可能讓速度比較快)。

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

 

women1.txt

name	height	weight	tmp
stu1	58	115	1.1
stu2	59	117	1.2
stu3	60	120	1.3
stu4	61	123	1.4
stu5	62	126	1.5
stu6	63	129	1.6
stu7	64	132	1.7
stu8	65	135	1.8
stu9	66	139	1.9
stu10	67	142	2
stu11	68	146	2.1
stu12	69	150	2.2
stu13	70	154	2.3
stu14	71	159	2.4
stu15	72	164	2.5

 

## 基本參數
dataset1 <- read.table("./women1.txt", header = T, sep = "\t")
head(dataset1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62    126 1.5
## 6 stu6     63    129 1.6

dataset1$name

##  [1] stu1  stu2  stu3  stu4  stu5  stu6  stu7  stu8  stu9  stu10 stu11
## [12] stu12 stu13 stu14 stu15
## 15 Levels: stu1 stu10 stu11 stu12 stu13 stu14 stu15 stu2 stu3 ... stu9

class(dataset1$name)

## [1] "factor"

is.factor(dataset1$name)

## [1] TRUE

dataset1 <- read.table("./women1.txt", header = T, sep = "\t", as.is = T)
head(dataset1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62    126 1.5
## 6 stu6     63    129 1.6

dataset1$name

##  [1] "stu1"  "stu2"  "stu3"  "stu4"  "stu5"  "stu6"  "stu7"  "stu8" 
##  [9] "stu9"  "stu10" "stu11" "stu12" "stu13" "stu14" "stu15"

class(dataset1$name)

## [1] "character"

is.factor(dataset1$name)

## [1] FALSE

## skip = 0 跳過文件的前n行(skip = n)
dataset2 <- read.table("./women1.txt", header = T, sep = "\t", skip = 3)
head(dataset2)

##   stu3 X60 X120 X1.3
## 1 stu4  61  123  1.4
## 2 stu5  62  126  1.5
## 3 stu6  63  129  1.6
## 4 stu7  64  132  1.7
## 5 stu8  65  135  1.8
## 6 stu9  66  139  1.9

dataset2 <- read.table("./women1.txt", header = F, sep = "\t", skip = 3)
head(dataset2)

##     V1 V2  V3  V4
## 1 stu3 60 120 1.3
## 2 stu4 61 123 1.4
## 3 stu5 62 126 1.5
## 4 stu6 63 129 1.6
## 5 stu7 64 132 1.7
## 6 stu8 65 135 1.8

## nrows = -1 最大讀入行數,“-1”表示都讀入
dataset3 <- read.table("./women1.txt", header = T, sep = "\t", nrows = 3)
head(dataset3)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60    120 1.3

dataset3 <- read.table("./women1.txt", header = F, sep = "\t", nrows = 3)
head(dataset3)

##     V1     V2     V3  V4
## 1 name height weight tmp
## 2 stu1     58    115 1.1
## 3 stu2     59    117 1.2

## 指定行名
dataset4 <- read.table("./women1.txt", header = T, sep = "\t", row.names = 1) # **表中第一行一列元素被跳過**
head(dataset4)

##      height weight tmp
## stu1     58    115 1.1
## stu2     59    117 1.2
## stu3     60    120 1.3
## stu4     61    123 1.4
## stu5     62    126 1.5
## stu6     63    129 1.6

row.names(dataset4)

##  [1] "stu1"  "stu2"  "stu3"  "stu4"  "stu5"  "stu6"  "stu7"  "stu8" 
##  [9] "stu9"  "stu10" "stu11" "stu12" "stu13" "stu14" "stu15"

 

women2.txt

\ 這是一些簡單的測試數據

name	height	weight	tmp
/stu1/	58	115	1*1
/stu2/	59	117	1*2
/stu3/	60	""	1*3\注意:空格處經測試必須引起來,
					\否則會出先error“……line 3 did not have 4 elements”
/stu4/	61	123	1*4
/stu5/	62	NO	1*5
/stu6/	NO	NO	1*6
/stu7/	64	132	1*7
/stu8/	65	135	1*8
/stu9/	66	139	1*9
/stu10/	NA	NA	2*0
/stu11/	68	146	2*1
/stu12/	69	150	2*2
/stu13/	70	154	2*3
/stu14/	71	159	2*4
/stu15/	72	164	2*5

 

## dec = “.” 指定小數點數;na.strings = “NA” 指定什么樣的字符表示值缺少;comment.char 只能設定一個
data1 <- read.table("./women2.txt", header = T, dec = "*", na.strings = c("", "NA", "NO"), comment.char = "\\")
head(data1)

##     name height weight tmp
## 1 /stu1/     58    115 1.1
## 2 /stu2/     59    117 1.2
## 3 /stu3/     60     NA 1.3
## 4 /stu4/     61    123 1.4
## 5 /stu5/     62     NA 1.5
## 6 /stu6/     NA     NA 1.6

sapply(data1[1:6,], is.na)

##       name height weight   tmp
## [1,] FALSE  FALSE  FALSE FALSE
## [2,] FALSE  FALSE  FALSE FALSE
## [3,] FALSE  FALSE   TRUE FALSE
## [4,] FALSE  FALSE  FALSE FALSE
## [5,] FALSE  FALSE   TRUE FALSE
## [6,] FALSE   TRUE   TRUE FALSE

sapply(data1, class)

##      name    height    weight       tmp 
##  "factor" "integer" "integer" "numeric"

# quote的設定
data1 <- read.table("./women2.txt", header = T, dec = "*", na.strings = c("", "NA", "NO"), comment.char = "\\", quote = "/", as.is = F)
head(data1)

##   name height weight tmp
## 1 stu1     58    115 1.1
## 2 stu2     59    117 1.2
## 3 stu3     60     "" 1.3
## 4 stu4     61    123 1.4
## 5 stu5     62   <NA> 1.5
## 6 stu6     NA   <NA> 1.6

sapply(data1, class)

##      name    height    weight       tmp 
##  "factor" "integer"  "factor" "numeric"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM