memiscパッケージのrecodeのバグ

追記(2011/11/07):memisc(0.95-35)で修正されました。

memisc(0.95-33)のrecode関数にはバグがある模様。

> library(memisc)
> x <- 1:100
> y <- recode(x, "low" <- range(min, 30), "hi" <- range(31, max))
> x[1:10*3] <- NA
> z <- recode(x, "low" <- range(min, 30), "hi" <- range(31, max))
 以下にエラー if (any(nevtrue)) { :  TRUE/FALSE が必要なところが欠損値です 

NAが含まれる数値ベクトルを渡すとエラーが出る。

以下のように,NAに一時的に数値を割り当てて対処するのがたぶん一番楽。

> x[is.na(x)] <- 999
> z <- recode(x, "low" <- range(min, 30), "hi" <- range(31, 100),
+             otherwise=NA)
> z
  [1] low  low  <NA> low  low  <NA> low  low  <NA> low  low  <NA> low  low 
 [15] <NA> low  low  <NA> low  low  <NA> low  low  <NA> low  low  <NA> low 
 [29] low  <NA> hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi  
 [43] hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi  
 [57] hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi  
 [71] hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi  
 [85] hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi   hi  
 [99] hi   hi  
Levels: low hi

バク報告したいけど英語メールがめんどくさい…。
でも,memisc推進の妨げになるので近いうちにします。