перенос текста из apa_table() в r markdown?

#r #r-markdown #papaja

Вопрос:

*Отредактировано для упрощения примера

Я пытаюсь использовать apa_table (), чтобы включить таблицу критериев исключения включения в обзорную статью. Я уже сделал таблицу в excel, но я пытаюсь перейти к использованию Rstudio и Rmarkdown для всех моих академических работ.

Таблица выглядит так в excel

Включение Исключение Обоснование
1. Публикация Рецензируемый журнал Источники, отличные от рецензируемых журналов (т. е. профессиональные публикации, серая литература) Для обеспечения качества…
2. Тип статьи Исследования/Эмпирические статьи, представляющие методы и результаты, пригодные для анализа и синтеза Статьи, описывающие вмешательства без представления результатов исследований (т. е. руководства по терапии) Чтобы оценить доказательства для данного…
3. Язык Статьи, опубликованные или доступные на английском языке Статьи, недоступные на английском языке Нет доступа к услугам по переводу
4. Тип программы Программа, которая явно нацелена… Вмешательства, которые не включают…. Для обеспечения того, чтобы обзор был сосредоточен на…

Мне гораздо удобнее в python, и с помощью сетчатого я решил, что могу просто передать фрейм данных Pandas в R и создать таблицу, но когда я это делаю, связанный документ показывает таблицу следующим образом:

вязаный из кода

Я также только что попытался использовать текст уценки, и результат… ближе

из mdtext

код, который я использовал, таков

 df <- data.frame(inclusion <- c('Peer reviewed Journal articles', 
    'Research/Empirical articles presenting methods and results suitable for analysis and synthesis',
    'Articles published or available in English',
    'Programs that explicitly include...'),
exclusion <- c('Sources other than peer reviewed journals (i.e. professional publications)',
    'Articles describing interventions without presenting research findings (i.e. theraputuc manuals)',
    'Articles unavailable in English',
    'Interventions that do not include a...'),
rationale <- c('To ensure the quality of included...',
    'To evaluate only empirical evidence for a given program/intervention rather than...',
    'No access to translation service',
    'To ensure the review focuses on the outcomes of hero based interventions')
)

rownames(df) <- c('1. Publication type',
                  '2. Article type',
                  '3. Language',
                  '4. Program type')

colnames(df) <- c('Inclusion', 'Exclusion', 'Rationale')

library(papaja)
apa_table(
  df
  , caption = "Inclusion/Exclusion Criteria"
  , note = NULL
)
 

Я также прочитал эту страницу с apa_table() аргументами, и мне не повезло. Любая помощь будет признательна.

Комментарии:

1. Вы используете формат вывода PDF? Если это так, вы можете использовать настройки выравнивания по латексу. Для выравнивания абзацев вы можете использовать p{4cm} или что-то подобное. Здесь описаны и другие возможности: en.wikibooks.org/wiki/LaTeX/Tables#Text_wrapping_in_tables . Я бы продемонстрировал, но вы не включили ничего воспроизводимого…

2. Я пытался отредактировать его, как и вы, позволит ли это вам продемонстрировать, что вы имеете в виду?

3. Извините, я не могу понять, что вы написали. Вы должны упростить пример: сбросьте все ненужные материалы Python и просто создайте фрейм данных в R, содержащий текст, который вы хотите отформатировать. Поместите все это в простой документ R Markdown, который может запустить любой желающий.

4. Теперь я преобразовал его в R, спасибо за совет.

5. Это не уценка R. Когда я помещаю его в документ с уценкой R, он не запускается. Вы не говорите apa_table , откуда взялась функция (я догадался о papaja пакете, но его нет в CRAN, так какую версию мне следует установить?), Когда я устанавливаю ее с Github, она выходит из строя из-за отсутствия среды LaTeX и т. Д. Я голосую за закрытие.

Ответ №1:

В руководстве papaja есть полезный трюк для подобных случаев: столбцы фиксированной ширины

 apa_table(
  df
  , caption = "Inclusion/Exclusion Criteria"
  , align = c("p{3cm}", rep("p{3.6cm}", ncol(df)))
  , font_size = "footnotesize"
)
 

Хитрость заключается в том, чтобы указать фиксированную ширину для каждого столбца с помощью аргумента align . Здесь я указываю 3 см для первого столбца (имена ваших строк) и 3,6 см для каждого соответствующего столбца ( p средства, выровненные по вертикали в верхней части каждой ячейки таблицы, но есть и другие варианты). Просто чтобы сделать все это еще красивее, я использую шрифт поменьше, указав font_size = "footnotesize" .

Затем вывод в PDF-документе выглядит следующим образом: введите описание изображения здесь

Комментарии:

1. ты герой высочайшего ранга. Спасибо.

2. Не могли бы вы указать мне на лучшее объяснение синтаксиса выравнивания? Что, если, например, я хочу, чтобы первый столбец был 3 см, второй-1 см по центру, а остальные-3,6? У меня возникли некоторые проблемы с синтаксическим анализом, чтобы получить больший контроль над таблицей.

Ответ №2:

Отвечаю на всякий случай, если это поможет кому-то, кто был в моем положении.

Основываясь на отзывах из комментариев выше, я нашел решение, которое работает для того, что мне нужно. Я уверен, что кто-то более компетентный в R и LaTeX мог бы предложить гораздо лучшее решение, чем это, но это сработало для меня.

Сначала я запустил apa_table() функцию, чтобы взглянуть на вывод

 
df <- data.frame(inclusion <- c('Peer reviewed Journal articles', 
    'Research/Empirical articles presenting methods and results suitable for analysis and synthesis',
    'Articles published or available in English',
    'Programs that explicitly include...'),
exclusion <- c('Sources other than peer reviewed journals (i.e. professional publications)',
    'Articles describing interventions without presenting research findings (i.e. theraputuc manuals)',
    'Articles unavailable in English',
    'Interventions that do not include a...'),
rationale <- c('To ensure the quality of included...',
    'To evaluate only empirical evidence for a given program/intervention rather than...',
    'No access to translation service',
    'To ensure the review focuses on the outcomes of hero based interventions')
)

rownames(df) <- c('1. Publication type',
                  '2. Article type',
                  '3. Language',
                  '4. Program type')
colnames(df) <- c('Inclusion', 'Exclusion', 'Rationale')

apa_table(
  df
  , caption = "Inclusion/Exclusion Criteria"
  , note = NULL
)

 

это приводит к выходу

«nnnbegin{таблица}[tbp]nnbegin{центр}nbegin{трехчастная таблица}nnзаголовок{заголовок теста}nnbegin{табличный}{llll}ntoprulen amp; многоколоночный{1}{c}{включение…. c..Рецензирование.Journal.articles….Research.Empirical.articles.presenting.methods.and.results.suitable.for.analysis.and.synthesis…} amp; multicolumn{1}{c}{exclusion….c..Sources.other.than.peer.reviewed.journals..i.e..professional.publications….} amp; multicolumn{1}{c}{rationale….c..To.ensure.the.quality.of.included…….To.evaluate.only.empirical.evidence.for.a.given.program.intervention.rather.than……}\nmidrulen1. Тип публикации и рецензируемые журнальные статьи и источники, отличные от рецензируемых журналов (т. е. профессиональные публикации), и для обеспечения качества включенных…\n2. Тип статьи и исследования/Эмпирические статьи, представляющие методы и результаты, подходящие для анализа и синтеза, и Статьи, описывающие вмешательства без представления результатов исследований (т. е. руководств по терапии) и для оценки только эмпирических доказательств для данной программы/вмешательства, а не…\n3. Язык и Статьи, опубликованные или доступные на английском языке, и Статьи, недоступные на английском языке, и нет доступа к службе перевода\n4. Тип программы и Программы, которые явно включают… и Мероприятия, которые не включают… и Для обеспечения того, чтобы обзор был сосредоточен на результатах, основанных на герое interventions\nbottomrulenend{tabular}nnend{threeparttable}nend{center}nnend{table}nnn»

Затем я использовал эту полезную страницу вместе с ресурсами, предоставленными в комментариях к исходному вопросу, чтобы отредактировать эту стену текста в раздел rmarkdown tex

 begin{table}[tbp]
begin{center}
begin{threeparttable}
caption{test caption}
begin{tabular}{p{4cm} p{4cm} p{4cm} p{4cm}}
hline
toprule amp; multicolumn{1}{c}{Inclusion} amp; multicolumn{1}{c}{Exclusion} amp; multicolumn{1}{c}{Rationale}\
hline
midrule 1. Publication type amp; Peer reviewed Journal articles amp; Sources other than peer reviewed journals (i.e. professional publications) amp; To ensure the quality of included...\
2. Article type amp; Research/Empirical articles presenting methods and results suitable for analysis and synthesis amp; Articles describing interventions without presenting research findings (i.e. theraputuc manuals) amp; To evaluate only empirical evidence for a given program/intervention rather than...\
3. Language amp; Articles published or available in English amp; Articles unavailable in English amp; No access to translation service\
4. Program type amp; Programs that explicitly include... amp; Interventions that do not include a... amp; To ensure the review focuses on the outcomes of hero based interventions\
bottomrule
hline
end{tabular}
end{threeparttable}
end{center}
end{table}
 

По сути, это было просто удаление юникода из строкового вывода, чтобы превратить его в код LaTeX, а затем редактирование кода latex для получения желаемого результата.

Я уверен, что этот ответ так же плох, как и вопрос, но, надеюсь, он кому-то поможет.

[Латексный фрагмент edite 1