Dear R friends:

Can someone help me with the following problem? Many thanks in advance.

# Problem Description:
# I want to write functions which take a (character) vector of dataframe
names as input argument.
# For example, I want to extract the number of observations from a number of
dataframes.
# I tried the following:

nobs.fun <- function (dframe.vec)
{
  nobs.vec <- array(NA,c(length(dframe.vec),1))

  for (i in 1:length(dframe.vec))
      {
      nobs.vec[i] <- dim(dframe.vec[i])[1]
      }

  return(nobs.vec)
}

# To show the problem, I create a fake dataframe and store its name (i.e.,
dframe.1)
# in a vector (i.e., dframe.vec) of length 1.

# creation of fake dataframe
dframe.1 <- as.data.frame(matrix(seq(1:2),c(1,2)))
# store the dataframe name into a vector using c() function
dframe.vec <- c("dframe.1")

# The problem is that the following line does not work
nobs.fun(dframe.vec)

# Seems to me, the problem stems from the fact that dframe.vec[1] is
intepreted by R as "dframe.vec" (note: it is quotated)
# and dim("dframe.vec")[1] gives NULL.
# Also, I realize the following line works as expected (note: dframe.1 is
not quoted any more):
dim(dframe.1)[1]

So my question is then: how can I pass dataframe names as an input argument
for another function
without running into the quotation mark issue above?

Any hint?

Thank you in advance.
-Sean

        [[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.

Reply via email to