Dear R-helpers:

I am new to R and ran into the following question and would appreicate
your advice very much.

My question: How to use a character vector that records object names as
function input argument?

I asked this question very recently and was advised to use get(). get()
works when passing one single object name.
but it does not work when passing multiple object names.

For example, I want to rbind many dfs into one df.
Below, I use 3 data frames for illustration.
df.1 <- data.frame(v1=rnorm(5), v2=rnorm(5))
df.2 <- data.frame(v1=rnorm(5), v2=rnorm(5))
df.3 <- data.frame(v1=rnorm(5), v2=rnorm(5))

all.dfs <- c("df.1","df.2","df.3")
# all.dfs is the a character vector recording all object names and I would
like to use all.dfs as
# an input argument for a function that performs rbind

# The following works, but I do not know how to use all.dfs as its input
argument
output <- do.call("rbind",list(df.1,df.2,df.3))

# The desired function has the following form:

output <- desired.function (all.dfs)


# Show some hw I have done below:
# I tried the following things and they do not work
do.call("rbind",list(all.dfs))

one.string <- paste(all.dfs,collapse=",")

do.call("rbind",list(one.string))
do.call("rbind",list(get(one.string)))
do.call("rbind",list(parse(one.string)))
# By the way, the following loop.fun works but it is Not what I like because
I may have a large number of dfs
loop.fun <- function (all.dfs)
{
for (i in 1:length(all.dfs) )
ifelse ( i==1, output <- get(all.dfs[i]), output <-
rbind(output,get(all.dfs[i])) )
return(output)
}

output <- loop.fun(all.dfs)



#Your help is highly appreciated. Many thanks in advance.

-Sean Zhang, Ann Arbor

	[[alternative HTML version deleted]]

