R语言中的read.table()
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
R语⾔中的read.table()
参考资料:
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
s, s, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, s = 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 指定列的数据类型格式
s 指定各⾏名称,也可以是数字,指定某列为⾏名
s
as.is = !stringsAsFactors as.is 字符向量是否转换成因⼦(仅仅这个功能),TRUE时保留为字符型
na.strings = “NA” 指定什么样的字符表⽰值缺少
colClasses = NA colClasses运⾏为输⼊中的每个列设置需要的类型。
注意,colClasses 和 as.is 对每列专⽤,⽽不是每个变量。
因此,它对⾏标签列也同样适⽤(如果有的话)。
nrows = -1 最⼤读⼊⾏数,即读⼊前多少⾏,“-1”表⽰都读⼊
skip = 0 跳过⽂件的前n⾏(skip = n)
s = 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", s = 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
s(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"。