[R] idiom for constructing data frame
peter dalgaard
pdalgd at gmail.com
Fri Apr 3 14:51:58 CEST 2015
> On 31 Mar 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)))
>
Yes, I cooked up something similar:
names <- c("foo","bar","baz")
names(names) <- names # confuse 'em....
as.data.frame(lapply(names, function(x) rep(NA_real_,10)))
but wouldn't it be more to the point to do
df <- as.data.frame(rep(list(rep(NA_real_, 10)),3))
names(df) <- names
?
The lapply() approach could be generalized to a vector of column classes, though.
A general solution looks impracticable; once you start considering how to specify factor columns with each their own level set, things get a bit out of hand.
-pd
>
> 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.
--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk Priv: PDalgd at gmail.com
More information about the R-help
mailing list