8

R 2.15.0次のコードは、実行中の my を segfaultsしdata.table 1.8.9ます。

library(data.table)
d = data.table(date = c(1,2,3,4,5), value = c(1,2,3,4,5))

# works as expected
d[-5][, mean(value), by = list(I(as.integer((date+1)/2)))]

# crashes R
d[-5, mean(value), by = list(I(as.integer((date+1)/2)))]

関連する注意事項として、次の 2 つのコマンドの出力は大きく異なります。

d[-5][, value, by = list(I(as.integer((date+1)/2)))]
#    I value
# 1: 1     1
# 2: 1     2
# 3: 2     3
# 4: 2     4

d[-5, value, by = list(I(as.integer((date+1)/2)))]
#    I         value
# 1: 1 2.121996e-314
# 2: 1 2.470328e-323
# 3: 2 3.920509e-316
# 4: 2 2.470328e-323

Rコメントからmy をクラッシュさせるより単純なコマンド:

d[-5, value, by = date]

Ricardo が指摘するように、それは負のインデックス付けの組み合わせであり、byそれが問題を引き起こします。

4

2 に答える 2