Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: tags/R-2-0-1
Fetching contributors…

Cannot retrieve contributors at this time

204 lines (198 sloc) 5.895 kb
R : Copyright 2004, The R Foundation for Statistical Computing
Version 2.0.0 Under development (unstable) (2004-05-23), ISBN 3-900051-00-3
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for a HTML browser interface to help.
Type 'q()' to quit R.
> ## tests of boundary cases in read.table()
> # empty file
> file.create("foo1")
[1] TRUE
> try(read.table("foo1")) # fails
Error in read.table("foo1") : no lines available in input
> read.table("foo1", col.names=LETTERS[1:4])
[1] A B C D
<0 rows> (or 0-length row.names)
> unlink("foo1")
>
> # header only
> cat("head\n", file = "foo2")
> read.table("foo2")
V1
1 head
> try(read.table("foo2", header=TRUE)) # fails in 1.2.3
[1] head
<0 rows> (or 0-length row.names)
> unlink("foo2")
> # header detection
> cat("head\n", 1:2, "\n", 3:4, "\n", file = "foo3")
> read.table("foo3", header=TRUE)
head
1 2
3 4
> read.table("foo3", header=TRUE, col.names="V1")
V1
1 2
3 4
> read.table("foo3", header=TRUE, row.names=1)
head
1 2
3 4
> read.table("foo3", header=TRUE, row.names="row.names")
head
1 2
3 4
> read.table("foo3", header=TRUE, row.names="head") # fails in 1.2.3
row.names
2 1
4 3
>
> # wrong col.names
> try(read.table("foo3", header=TRUE, col.names=letters[1:4]))
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 1 did not have 4 elements
In addition: Warning message:
header and 'col.names' are of different lengths in: read.table("foo3", header = TRUE, col.names = letters[1:4])
> unlink("foo3")
>
> # incomplete last line
> cat("head\n", 1:2, "\n", 3:4, file = "foo4")
> read.table("foo4", header=TRUE)
head
1 2
3 4
Warning message:
incomplete final line found by readTableHeader on `foo4'
> unlink("foo4")
>
> # blank last line
> cat("head\n\n", 1:2, "\n", 3:4, "\n\n", file = "foo5")
> read.table("foo5", header=TRUE)
head
1 2
3 4
>
> # test of fill
> read.table("foo5", header=FALSE, fill=TRUE, blank.lines.skip=FALSE) # fails in 1.2.3
V1 V2
1 head NA
2 NA
3 1 2
4 3 4
5 NA
> unlink("foo5")
>
> cat("head\n", 1:2, "\n", 3:5, "\n", 6:9, "\n", file = "foo6")
> try(read.table("foo6", header=TRUE))
Error in read.table("foo6", header = TRUE) :
more columns than column names
> try(read.table("foo6", header=TRUE, fill=TRUE))
Error in read.table("foo6", header = TRUE, fill = TRUE) :
more columns than column names
> read.table("foo6", header=FALSE, fill=TRUE)
V1 V2 V3 V4
1 head NA NA NA
2 1 2 NA NA
3 3 4 5 NA
4 6 7 8 9
> unlink("foo6")
>
> # test of type conversion in 1.4.0 and later.
> cat("A B C D E F\n",
+ "1 1 1.1 1.1+0i NA F abc\n",
+ "2 NA NA NA NA NA NA\n",
+ "3 1 2 3 NA TRUE def\n",
+ sep = "", file = "foo7")
> (res <- read.table("foo7"))
A B C D E F
1 1 1.1 1.1+0i NA FALSE abc
2 NA NA NA NA NA <NA>
3 1 2.0 3.0+0i NA TRUE def
> sapply(res, typeof)
A B C D E F
"integer" "double" "complex" "logical" "logical" "integer"
> sapply(res, class)
A B C D E F
"integer" "numeric" "complex" "logical" "logical" "factor"
> (res2 <- read.table("foo7",
+ colClasses = c("character", rep("numeric", 2),
+ "complex", "integer", "logical", "character")))
A B C D E F
1 1 1.1 1.1+0i NA FALSE abc
2 NA NA NA NA NA <NA>
3 1 2.0 3.0+0i NA TRUE def
> sapply(res2, typeof)
A B C D E F
"double" "double" "complex" "integer" "logical" "character"
> sapply(res2, class)
A B C D E F
"numeric" "numeric" "complex" "integer" "logical" "character"
> unlink("foo7")
>
> # should be logical
> type.convert(character(0))
logical(0)
>
> # test of comments in data files
> cat("# a test file",
+ "# line 2",
+ "# line 3",
+ "#line 4",
+ "# line 5",
+ "## now the header",
+ " a b c",
+ "# some more comments",
+ "1 2 3",
+ "4 5 6# this is the second data row of the file",
+ " # some more comments",
+ "7 8 9",
+ "# trailing comment\n",
+ file= "ex.data", sep="\n")
> read.table("ex.data", header = T)
a b c
1 1 2 3
2 4 5 6
3 7 8 9
> unlink("ex.data")
>
> ## comment chars in headers
> cat("x1\tx#2\tx3\n1\t2\t2\n2\t3\t3\n", file = "test.dat")
> read.table("test.dat", header=T, comment.char="")
x1 x.2 x3
1 1 2 2
2 2 3 3
> unlink("test.dat")
>
> cat('#comment\n\n#another\n#\n#\n',
+ 'C1\tC2\tC3\n"Panel"\t"Area Examined"\t"# Blemishes"\n',
+ '"1"\t"0.8"\t"3"\n', '"2"\t"0.6"\t"2"\n', '"3"\t"0.8"\t"3"\n',
+ file = "test.dat", sep="")
> read.table("test.dat")
V1 V2 V3
1 C1 C2 C3
2 Panel Area Examined # Blemishes
3 1 0.8 3
4 2 0.6 2
5 3 0.8 3
> unlink("test.dat")
>
> cat('%comment\n\n%another\n%\n%\n',
+ 'C1\tC2\tC3\n"Panel"\t"Area Examined"\t"% Blemishes"\n',
+ '"1"\t"0.8"\t"3"\n', '"2"\t"0.6"\t"2"\n', '"3"\t"0.8"\t"3"\n',
+ file = "test.dat", sep="")
> read.table("test.dat", comment.char = "%")
V1 V2 V3
1 C1 C2 C3
2 Panel Area Examined % Blemishes
3 1 0.8 3
4 2 0.6 2
5 3 0.8 3
> unlink("test.dat")
>
> ## end of tests
>
Jump to Line
Something went wrong with that request. Please try again.