У меня есть несколько data.tables, каждый из которых содержит 10 + столбцов, состоящий из ~ 4 ключевых (столбцов) и оставшихся столбцов. При печати в файл журнала я хотел бы напечатать ключи как есть, пока значения должны быть отформатированы. Например,форматирование data.table output
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? Я не хочу сохранять форматированные значения в таблице данных. Это только для файла журнала. Мои таблицы большие, и я бы предпочел не копировать их.
И почему бы не «персистировать» их? После этого вы можете сбросить их с помощью:: = NULL. И если это наносит ущерб вашим ограничениям памяти (что кажется маловероятным), возможно, обратите внимание, что на самом деле вам не нужно форматировать все строки, если вы просто смотрите на вывод консоли, который по умолчанию печатает 10 строк (пять сверху и снизу) ... – Frank
В вашем конкретном примере все числовые столбцы отформатированы, поэтому вы можете просто применить функцию format к столбцам _all_ как 'df [, lapply (.SD, NF)]'. Это может не помочь в вашей реальной проблеме, и в этом случае вам следует обновить свой пример, чтобы отразить это (например, добавить числовой столбец, который вы не хотите форматировать). – Jerzy