[R] combining data from multiple read.delim() invocations.
David L Carlson
dcarlson at tamu.edu
Tue Jul 1 18:31:44 CEST 2014
There is a better way. First we need some data. This creates three files in your home directory, each with five rows:
write.table(data.frame(rep("A", 5), Sys.time(), Sys.time()),
"A.tab", sep="\t", row.names=FALSE, col.names=FALSE)
write.table(data.frame(rep("B", 5), Sys.time(), Sys.time()),
"B.tab", sep="\t", row.names=FALSE, col.names=FALSE)
write.table(data.frame(rep("C", 5), Sys.time(), Sys.time()),
"C.tab", sep="\t", row.names=FALSE, col.names=FALSE)
Now to read and combine them into a single data.frame:
fls <- c("A.tab", "B.tab", "C.tab")
df.list <- lapply(fls, read.delim, header=FALSE, col.names=c("lpar","started","ended"),
as.is=TRUE, na.strings='\\N', colClasses=c("character","POSIXct","POSIXct"))
df.all <- do.call(rbind, df.list)
> str(df.all)
'data.frame': 15 obs. of 3 variables:
$ lpar : chr "A" "A" "A" "A" ...
$ started: POSIXct, format: "2014-07-01 11:25:05" "2014-07-01 11:25:05" ...
$ ended : POSIXct, format: "2014-07-01 11:25:05" "2014-07-01 11:25:05" ...
-------------------------------------
David L Carlson
Department of Anthropology
Texas A&M University
College Station, TX 77840-4352
-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of John McKown
Sent: Tuesday, July 1, 2014 7:07 AM
To: r-help at r-project.org
Subject: [R] combining data from multiple read.delim() invocations.
Is there a better way to do the following? I have data in a number of tab
delimited files. I am using read.delim() to read them, in a loop. I am
invoking my code on Linux Fedora 20, from the BASH command line, using
Rscript. The code I'm using looks like:
arguments <- commandArgs(trailingOnly=TRUE);
# initialize the capped_data data.frame
capped_data <- data.frame(lpar="NULL",
started=Sys.time(),
ended=Sys.time(),
stringsAsFactors=FALSE);
# and empty it.
capped_data <- capped_data[-1,];
#
# Read in the data from the files listed
for (file in arguments) {
data <- read.delim(file,
header=FALSE,
col.names=c("lpar","started","ended"),
as.is=TRUE,
na.strings='\\N',
colClasses=c("character","POSIXct","POSIXct"));
capped_data <- rbind(capped_data,data)
}
#
I.e. is there an easier way than doing a read.delim/rbind in a loop?
--
There is nothing more pleasant than traveling and meeting new people!
Genghis Khan
Maranatha! <><
John McKown
[[alternative HTML version deleted]]
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list