2013-08-06 9 views
11

空のdata.tableにfactor列がある場合、factor列は:= NULL演算子では削除できません。整数列と文字列に問題はありません。エラーを生成しないDT[, char.letters := NULL]DT[, numbers := NULL]こと空のdata.tableのfactor列を削除中にエラーが発生しました

Error in `[.data.table`(DT, , `:=`(factor.letters, NULL)) : 
Can't assign to column 'factor.letters' (type 'factor') a value of type 'NULL' (not character, factor, integer or numeric) 

注:

require(data.table) 
DT <- data.table(numbers = integer(0), 
       char.letters = character(0), 
       factor.letters = factor(character(0))) 
DT[, factor.letters := NULL] 

は、私は次のエラーを取得します。

factor列は文字列と整数列とで動作が異なるため、これはdata.tableの問題ですが、間違っていますか?

編集:使用前の例では、(その後、joinと呼ばれた)空data.tableを作成するために参加、それは直接作成することによって、同じように簡単に再生することができます。

+0

あなたが気づいた他の奇妙なプロパティ – eddi

+0

'join [、factor.letters:= as.character(NULL)]'はうまくいくようです... –

+0

これは私が出会った唯一の不思議なプロパティです。 – Frank

答えて

1

ご報告いただきありがとうございます。 v1.8.9で修正されました

Deleting a (0-length) factor column using :=NULL on an empty data.table now works, #4809 . Thanks to Frank Pinter for reporting. Test added.