1

回避策を見つけたので、これは興味深い質問ですが、きれいではありません。

pander パッケージを (0.6.1 に) 更新すると、data.table (パッケージ バージョン 1.10.4-3) から構築されたワイド フォーマットの data.table で pander() を使用しようとするとエラーが発生し始めました。以前) data.table::dcast() を使用して長い形式で:

data.table::setattr(x, "row.names", row.names.dt) のエラー: 行名は「double」ではなく「character」または「integer」でなければなりません

行名を削除しようとしましたが、役に立ちませんでした。いくつかの調査の後、reshape2::dcast ではエラーがないことがわかりましたが、reshape2::dcast は data.table を data.frame に変換します。これは私が望んでいるものではありません。もちろん、data.frame を data.table に戻すこともできます。

エラーを生成するサンプルコードを次に示します。

library(pander)
library(data.table)

dt.long <- data.table(time=c(1, 1, 2, 2), T=c("c", "t", "c", "t"), count=c(10, 15, 15, 20))
pander(dt.long) # this works fine

dt.wide <- dcast(dt.long, time~T, value.var = "count")
row.names(dt.wide) <- NULL # doesn't help
row.names(dt.wide) <- c() # doesn't help either
pander(dt.wide) # produces error

# work-around
library(reshape2)
dt.wide <- dcast(dt.long, time~T, value.var = "count")
pander(dt.wide) # works fine
class(dt.wide) # but this is a data.frame
dt.wide <- data.table(dt.wide) # now it is a data.table again

データを data.table として保持し、以前と同じようにパンダーを使用する簡単な方法はありますか?
これが問題になる場合に備えて、R バージョン 3.3.2 を使用します。

前もって感謝します!

4

2 に答える 2