> On 03 Apr 2015, at 16:46 , William Dunlap wrote:
>
> >
> > df <- as.data.frame(rep(list(rep(NA_real_, 10)),3))
> > names(df) <- names
>
> As a matter of personal style (and functional programming
> sensibility), I prefer not to make named objects and then modify them.
> Also, the names comin
> 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
As a matter of personal style (and functional programming
sensibility), I prefer not to make named objects and then modify them.
Also, the names coming out of that as.data.fram
On Tue, Mar 31, 2015 at 6:42 PM, Sarah Goslee wrote:
> On Tue, Mar 31, 2015 at 6:35 PM, Richard M. Heiberger wrote:
>> I got rid of the extra column.
>>
>> data.frame(r=seq(8), foo=NA, bar=NA, row.names="r")
>
> Brilliant!
>
> After much fussing, including a disturbing detour into nested lapply
>
> On 31 Mar 2015, at 20:55 , William Dunlap 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 cooke
I've got dataFrame() in R.utils for this purpose, e.g.
> df <- dataFrame(colClasses=c(a="integer", b="double", c="character"),
> nrow=10L)
> str(df)
'data.frame': 10 obs. of 3 variables:
$ a: int 0 0 0 0 0 0 0 0 0 0
$ b: num 0 0 0 0 0 0 0 0 0 0
$ c: chr "" "" "" "" ...
Related: You can
On Tue, Mar 31, 2015 at 6:35 PM, Richard M. Heiberger wrote:
> I got rid of the extra column.
>
> data.frame(r=seq(8), foo=NA, bar=NA, row.names="r")
Brilliant!
After much fussing, including a disturbing detour into nested lapply
statements from which I barely emerged with my sanity (arguable, I
I got rid of the extra column.
data.frame(r=seq(8), foo=NA, bar=NA, row.names="r")
Rich
On Tue, Mar 31, 2015 at 6:18 PM, Sven E. Templer wrote:
> 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
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))
}
emp
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, Sara
You can make it as elegant as you want, e.g.,
make.empty.df <- function(nrow,ncol, names) {
if(length(names) %% ncol != 0) stop("Lenght of names is not a
multiple of the number of colums")
data.frame(matrix(NA, nrow, ncol, dimnames = list(NULL, names)))
}
Best,
Ista
On Tue, Mar 31, 2015
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 unRlik
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
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 mis
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
14 matches
Mail list logo