[R] idiom for constructing data frame

Sven E. Templer sven.templer at gmail.com
Wed Apr 1 00:18:23 CEST 2015


If you don't mind an extra column, you could use something similar to:

data.frame(r=seq(8),foo=NA,bar=NA)

If you do, here is another approach (see function body):

empty.frame <- function (r = 1, n = 1, fill = NA_real_) {
  data.frame(setNames(lapply(rep(fill, length(n)), rep, times=r), n))
}
empty.frame()
empty.frame(, seq(3))
empty.frame(8, c("foo", "bar"))

I could not put it in one line either, without retyping at least one
argument (n in this case).
So I suggest a function is the way to go for a simplified syntax ...

Thanks to all for the ideas!
Sven

On 31 March 2015 at 20:55, William Dunlap <wdunlap at tibco.com> wrote:

> You can use structure() to attach the names to a list that is input to
> data.frame.
> E.g.,
>
> dfNames <- c("First", "Second Name")
> data.frame(lapply(structure(dfNames, names=dfNames),
> function(name)rep(NA_real_, 5)))
>
>
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com
>
> On Tue, Mar 31, 2015 at 11:37 AM, Sarah Goslee <sarah.goslee at gmail.com>
> wrote:
>
> > Hi,
> >
> > Duncan Murdoch suggested:
> >
> > > The matrix() function has a dimnames argument, so you could do this:
> > >
> > > names <- c("strat", "id", "pid")
> > > data.frame(matrix(NA, nrow=10, ncol=3, dimnames=list(NULL, names)))
> >
> > That's a definite improvement, thanks. But no way to skip matrix()? It
> > just seems unRlike, although since it's only full of NA values there
> > are no coercion issues with column types or anything, so it doesn't
> > hurt. It's just inelegant. :)
> >
> > Sarah
> > --
> > Sarah Goslee
> > http://www.functionaldiversity.org
> >
> > ______________________________________________
> > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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]]
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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]]



More information about the R-help mailing list