Hi, all
Basically, I have unknown number of data that need to be imported and
collapsed row-wisely.
The code below works fine, however the "rbind" function may require 50
arguments if there are 50 data files...
Thus, I would like to explore whether there are any methods in using dynamic
objects (i.e from the resulting objects in the for loop) as an argument in
the *"rbind"* function.
setwd(.........)
import.files <- c("a.txt", "b.txt", "c.txt",
"d.txt", "e.txt")
for (i in 1:length(import.files)) {
assign(paste("imp", i, sep = "."),
read.delim(eval(paste(".\\",
import.files[i], sep = "")), header = TRUE))
}
combined <- rbind(*imp.1, imp.2, imp.3, imp.4, imp.5, imp.6*)
Your expertise in resolving this issue would be greatly appreciated.
Steve
[[alternative HTML version deleted]]
Use a list instead of assign then do.call("rbind", thelist).
import.files <- c("a.txt", "b.txt", "c.txt",
"d.txt", "e.txt")
imp <- vector("list", length(import.files))
for (i in 1:length(import.files)) {
imp[[i]] <- read.delim(import.files[i], sep = "", header = TRUE)
}
combined <- do.call("rbind", imp)
HTH,
--sundar
On Mon, Jan 4, 2010 at 4:31 PM, Steven Kang
<stochastickang@gmail.com>wrote:
> Hi, all
>
> Basically, I have unknown number of data that need to be imported and
> collapsed row-wisely.
>
> The code below works fine, however the "rbind" function may
require 50
> arguments if there are 50 data files...
>
> Thus, I would like to explore whether there are any methods in using
> dynamic
> objects (i.e from the resulting objects in the for loop) as an argument in
> the *"rbind"* function.
>
>
>
> setwd(.........)
>
> import.files <- c("a.txt", "b.txt",
"c.txt", "d.txt", "e.txt")
> for (i in 1:length(import.files)) {
> assign(paste("imp", i, sep = "."),
read.delim(eval(paste(".\\",
> import.files[i], sep = "")), header = TRUE))
> }
>
> combined <- rbind(*imp.1, imp.2, imp.3, imp.4, imp.5, imp.6*)
>
>
>
> Your expertise in resolving this issue would be greatly appreciated.
>
>
>
> Steve
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@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.
>
[[alternative HTML version deleted]]
On 04/01/2010 7:31 PM, Steven Kang wrote:> Hi, all > > Basically, I have unknown number of data that need to be imported and > collapsed row-wisely. > > The code below works fine, however the "rbind" function may require 50 > arguments if there are 50 data files... > > Thus, I would like to explore whether there are any methods in using dynamic > objects (i.e from the resulting objects in the for loop) as an argument in > the *"rbind"* function. > > > > setwd(.........) > > import.files <- c("a.txt", "b.txt", "c.txt", "d.txt", "e.txt") > for (i in 1:length(import.files)) { > assign(paste("imp", i, sep = "."), read.delim(eval(paste(".\\", > import.files[i], sep = "")), header = TRUE))Computing names like this is almost always a bad idea. It's better to just put the items in a list: imp <- list() for (i in 1:length(import.files)) { imp[[i]] <- read.delim(eval(paste(".\\", import.files[i], sep = "")), header = TRUE) } Then to bind them all, simply use do.call(rbind, imp). Duncan Murdoch> } > > combined <- rbind(*imp.1, imp.2, imp.3, imp.4, imp.5, imp.6*) > > > > Your expertise in resolving this issue would be greatly appreciated. > > > > Steve > > [[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.