On 31/03/2015 1:52 PM, Sarah Goslee wrote:
I just snagged this from Duncan Murdoch's reply to the same question:

# Create an empty dataframe to hold the results
df <- data.frame(strat=NA, id=NA, pid=NA)[rep(1, length(sel)),]

This skips matrix(), but how to set the column names programmatically
within a function?

Sarah, still sure I'm missing something obvious

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)))

Duncan Murdoch


On Tue, Mar 31, 2015 at 1:46 PM, Sarah Goslee <sarah.gos...@gmail.com> wrote:
> Hi folks,
>
> I KNOW there has to be a way to do this more elegantly, but I
> consistently fail to come up with it, as I was just reminded while
> writing an example for a query on this list.
>
> What's a nifty way to construct a data frame of a given size? The only
> way I know of it to use matrix(), eg
>
> data.frame(matrix(NA, nrow=10, ncol=3))
>
> and then to set the colnames in a second step.
>
> This comes up a lot when pre-allocated a data frame before using a
> loop: I know the size and column names, but want an empty structure to
> fill later.
>
> Sarah
>


______________________________________________
R-help@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.

Reply via email to