Вставка горизонтальной линии с использованием таблиц в R

#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 под чашелистиком. Длина и чашелистик. Ширина в вашем выводе заставляет меня подозревать, что мы используем разные версии.