Рендеринг xtable со значащими цифрами

Я хотел бы иметь возможность отображать xtable в автоматически запускаемом фрагменте кода, т.е. НЕ с помощью копирования и вставки, контролируя количество значащих цифр. Единственный известный мне способ отрисовать xtable на стандартном графическом устройстве — это использовать grid.table, но этот метод игнорирует директиву digits и отображает все доступные цифры. Вот пример кода. Любой совет?

library(xtable)
library(gridExtra)

x = rnorm(100)
y = x + rnorm(100)
m = lm(y ~ x)

print(xtable(m)) #too many decimal places
print(xtable(m, digits = 2)) #this works
grid.table(xtable(m, digits=2)) #this doesn't!!!

Ни один из приведенных здесь советов не кажется полезным для автоматического рендеринга: R: rendering xtable


person rimorob    schedule 23.02.2016    source источник
comment
Вам нужно сделать это на устройстве печати?   -  person Thomas    schedule 24.02.2016
comment
Да. Вероятно, я мог бы найти обходные пути для рендеринга в pdf, но этого недостаточно. Мне нужно иметь возможность отображать любой из них.   -  person rimorob    schedule 24.02.2016
comment
xtable создает data.frame с дополнительными атрибутами, которые используются для форматирования при печати в форматах латекса или html. grid.table полностью игнорирует их и имеет дело только с голым data.frame, поэтому любое форматирование чисел должно выполняться для самих данных, например. с sprintf или formatC   -  person baptiste    schedule 24.02.2016


Ответы (2)


Если вы преобразуете все в строки, вы сможете выполнить эту работу:

x <- xtable(m)
x[] <- lapply(x, sprintf, fmt = "%0.2f")
grid.table(x)

введите здесь описание изображения

person Thomas    schedule 23.02.2016

Я не уверен в вашем окончательном устройстве сюжета, но для некоторых целей вы можете просто пропустить xtable все вместе:

library("broom")
library("gridExtra")
x = rnorm(100)
y = x + rnorm(100)
m = lm(y ~ x)
DF <- broom::tidy(m)
DF[,2:4] <- round(DF[,2:4], 2)
DF[,5] <- format(DF[,5], scientific = TRUE, digits = 4)
grid.table(DF)

Убедитесь, что у вас установлена ​​последняя версия gridExtra. Также можно очень детально управлять внешним видом таблицы, через темы (есть виньетка по теме).

person Bryan Hanson    schedule 23.02.2016
comment
Я уже использую тему. Ваш способ тоже попробую. Спасибо! - person rimorob; 24.02.2016