#r #latex
#r #Латекс
Вопрос:
Интересно, можно ли вставить горизонтальную линию в произвольном положении с tables
пакетом, поскольку в документации не объясняется, как этого добиться.
Давайте воспользуемся примером из документации:
library(tables)
tab <- tabular( (Species 1) ~ (n=1) Format(digits=2)*
(Sepal.Length Sepal.Width)*(mean sd), data=iris )
tab
# Sepal.Length Sepal.Width
# Species n mean sd mean sd
# setosa 50 5.01 0.35 3.43 0.38
# versicolor 50 5.94 0.52 2.77 0.31
# virginica 50 6.59 0.64 2.97 0.32
# All 150 5.84 0.83 3.06 0.44
Затем, используя latex(tab)
из пакета Hmisc, можно преобразовать объект таблицы в LaTeX, получив следующий результат:
Можно ли вставить a midrule
над All
строкой, чтобы получить следующую таблицу?
Ответ №1:
Я думаю, вы могли бы редактировать latex напрямую:
ltab <- Hmisc::latex(tab)
ltab$text <- gsub("nAll", "n\\hlinenAll", ltab$text)
Теперь ltab
выдает следующий вывод:
Комментарии:
1. Скорее всего, это самый простой способ добиться этого для примера в вопросе. Однако Hmisc:latex возвращает пустой объект , он записывает выходные данные в стандартный вывод или в указанный файл с помощью cat . Решением может быть запись таблицы в файл, а затем использование регулярного выражения с помощью sed (вызов его с помощью system из R).
2. @Gorka, нет, в моем ответе я дал
Hmisc::latex
tab
объект, который вы создали, и он создает объект S3 с двумя членами:text
иfile
. Вот почему вышеупомянутое решение работает. Я не просто придумал это: этот код произвел этот вывод3. Да, я уверен, что вы создали результат… прикрепленное изображение — это новое 😉 Но я не могу ее воспроизвести. Мой объект ltab имеет два атрибута (файл и стиль), но не
text
атрибут. Я использую R 4.0.2 и Hmisc 4.4-0. Я попытаюсь выяснить, что это происходит.4. Ммм … недостающий
cmidrule
под чашелистиком. Длина и чашелистик. Ширина в вашем выводе заставляет меня подозревать, что мы используем разные версии.