1
私はいくつかのdata.tablesを持っています。各データテーブルには、〜4個のキー(列)と残りの値(カウント)列で構成される10個以上の列があります。ログファイルに印刷するときは、値を書式設定している間はそのまま印刷したいと思います。たとえば、formatting data.table出力
require(data.table)
NF <- function(x) { return(format(x,big.mark=",",trim=TRUE,scientific=FALSE)) }
dt <- data.table(c1=c("a","b"),c2=c("c","d"),c3=c("e","f"),c4=c(123456,432156),
c5=c(4839384,83473948))
cbind(dt[, 1:3, with=F], dt[, lapply(.SD,NF), .SDcols=4:5]) #desired output
dtを呼び出して2回コールする必要はありません。私はフォーマットされた値 をdata.tableに保持したくありません。ログファイルのみです。私のテーブルは大きく、私はそれらをコピーしたくないです。
なぜ、それらを「保持」しないのですか?後で ':= NULL 'で瞬時に削除することができます。そして、それがあなたのメモリの限界に迫っている場合(恐らくそうではないようです)、デフォルトで10行(上から5行)を出力するコンソール出力だけを見ているならば、 ... – Frank
あなたの特定の例では、すべての数値列がフォーマットされているので、フォーマット関数を 'df [、lapply(.SD、NF)]'として_all_列に適用することができます。これはあなたの実際の問題では役に立たないかもしれません。その場合、例を更新して(つまり、フォーマットしたくない数値列を追加して)例を更新する必要があります。 – Jerzy