2012-08-10 32 views
3

我想为R数据框中的日期预分配空间。在R中预分配一个数据帧,并将日期作为列类

预先分配的字符和数字空间,我会写

MyDataframe <- data.frame(Name = character(10), 
          Tickets = numeric(10)) 

什么会我旁边添加到预先分配空间的日期? 这不工作...

# DOES NOT WORK 
MyDataframe <- data.frame(Name = character(10), 
          Tickets = numeric(10) 
          Date = Date(10)) 

目前,我定义了列数字,然后强迫为日期,但这似乎不太理想。
感谢

+0

你的第二个代码片段不工作,因为你缺少一个逗号。即使如此,它仍然不起作用,因为你正在调用一个不存在的函数Date()'。最后,如果你提到某些不起作用的东西,它总是有助于给出你实际看到的错误信息。请参阅[这里](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),了解如何制作可重现的R问题的提示。 – Andy 2012-08-10 16:24:39

+0

刚刚有同样的问题 - 并试图找到一个乐趣,将预先分配的日期相同的循环。解决方案尽管我一般不赞成用假数据填充单元格。然而在这种情况下看起来没有办法。 – 2013-02-01 10:09:39

回答

3

如果你正在寻找的是具有10个日期占位符列,这个工程:

as.Date(1:10, origin=Sys.Date()) 

你的问题是,character()numeric()功能采取长的说法,但 as.Date(如没有Date()函数)没有(?as.Date

+0

谢谢安迪!很好的答案。 – 2012-08-10 17:02:13

0

这是我的最终代码。它运作良好。

MyDF <- data.frame(Name = character(10), 
        Tickets = numeric(10), 
        Date = as.Date(rep(0,10), origin = "1900-01-01")) 

这里是输出:

> MyDF 

    Name Tickets  Date 
1    0 1900-01-01 
2    0 1900-01-01 
3    0 1900-01-01 
4    0 1900-01-01 
5    0 1900-01-01 
6    0 1900-01-01 
7    0 1900-01-01 
8    0 1900-01-01 
9    0 1900-01-01 
10   0 1900-01-01 

和总结

> summary(MyDF) 

Name  Tickets  Date   
:10 Min. :0 Min. :1900-01-01 
     1st Qu.:0 1st Qu.:1900-01-01 
     Median :0 Median :1900-01-01 
     Mean :0 Mean :1900-01-01 
     3rd Qu.:0 3rd Qu.:1900-01-01 
     Max. :0 Max. :1900-01-01 

感谢您的帮助

+1

我会将参数'stringsAsFactors = FALSE'添加到'data.frame()'。否则,如果你的'default.stringsAsFactors = TRUE',那么字符变量将被强制为一个级别的因子,并且试图增加值将产生NAs。 – MattBagg 2014-05-19 21:06:09

相关问题