R ';由';似乎没有保留';日期';在data.table中键入列,可能存在错误

R ';由';似乎没有保留';日期';在data.table中键入列,可能存在错误,r,data.table,type-mismatch,R,Data.table,Type Mismatch,我将data.table命名为如下数据: > head(data) start end unit 1: 2008-11-17 2007-01-23 ADM 2-05 2: 2008-12-29 2007-01-06 BOB 4-07 3: 2008-12-31 2007-01-01 DAT15-02 4: 2008-12-31 2010-01-01 DAT15-06 5: 2008-12-31 2010-01-02 TUW 4-09 6: 2008-12-3

我将data.table命名为如下数据:

> head(data)

    start        end     unit
1: 2008-11-17 2007-01-23 ADM 2-05
2: 2008-12-29 2007-01-06 BOB 4-07
3: 2008-12-31 2007-01-01 DAT15-02
4: 2008-12-31 2010-01-01 DAT15-06
5: 2008-12-31 2010-01-02 TUW 4-09
6: 2008-12-31 2010-01-02 BEG 5-01
数据类型如下:

sapply(dane, class)
start         end        unit 
"Date"      "Date" "character" 
我正在尝试调试这一行:

data[,
    list(date = format(seq(from = start, to = end, by = "1 day"), "%Y-%m-%d")), 
    by = list(start, end, unit)
]
然后我得到错误消息:

Error in del/by : non-numeric argument to binary operator
我发现,这个错误是由转换为数值引起的,这是在我将某个参数传递到“by”中的列表时发生的

因此,这个修改后的代码可以工作:

dane[,
    list(date = format(seq(
       from = as.Date(start, origin = "1970-01-01"), 
       to = as.Date(end, origin = "1970-01-01"), by = "1 day"), 
       "%Y-%m-%d")), 
    by = list(start, end, unit)
]
这看起来像data.table包中的错误。我想知道是否有人知道这件事。 提前感谢。

这已在v1.9.3版本中修复。发件人: o在
j
中使用带有属性的
by
列(例如:
因子
日期
),也不会保留属性,在
:=
的情况下也是如此。这部分是由于R3.1.0最近的更改而导致的早期修复(
bug#2531
)的回归。现在已修复并添加了更清晰的测试。感谢Christophe Dervieux的报道和AdamB的报道。关闭
#5437


再次感谢您的报告。

似乎已报告此错误: