Создание фрейма данных, который производит частично выделенные курсивом ячейки с помощью функций pkg: sjPlot - PullRequest
1 голос
/ 06 августа 2020

Я пытаюсь создать простую таблицу данных, в которой название рода в столбце «Coral_taxon» выделено курсивом, а «spp. Часть после названия рода не пишется с заглавной буквы. Я попытался закодировать каждую строку для "Coral_taxon" с помощью функции expression (), но безуспешно.

sum_dat_final2 <- data.frame(Site = c("Hanauma Bay", "Hanauma Bay", "Hanauma Bay", "Waikiki", "Waikiki", "Waikiki"), 
                                 Coral_taxon = c(expression(italic("Montipora"), " spp."), expression(italic("Pocillopora"), " spp."), expression(italic("Porites"), " spp."), expression(italic("Montipora"), " spp."), expression(italic("Pocillopora"), " spp."), expression(italic("Porites"), " spp.")),
                                 Estimate = c("0.45 ± 0.13 %", "0.43 ± 0.18 %", "19.5 ± 2.6 %", "0.05 ± 0.03 %", "0.47 ± 0.3 %", "1.19 ± 0.56 %"))
Error in as.data.frame.default(x[[i]], optional = TRUE) : 
  cannot coerce class ‘"expression"’ to a data.frame

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

Ответы [ 2 ]

3 голосов
/ 06 августа 2020
Библиотека

sjPlot использует теги HTML. Вы можете использовать <i>Text</i> для выделения курсивом.

df1 <- data.frame(Site = c("Hanauma Bay", "Hanauma Bay", "Hanauma Bay", 
                           "Waikiki", "Waikiki", "Waikiki"),
                  Coral_taxon = I(list("<i>Montipora</i> spp.", 
                                       "<i>Pocillopora</i> spp.", 
                                       "<i>Porites</i> spp.", 
                                       "<i>Montipora</i> spp.", 
                                       "<i>Pocillopora</i> spp.", 
                                       "<i>Porites</i> spp.")),
                  Estimate = c("0.45 <U+623C><U+3E31> 0.13 %", "0.43 <U+623C><U+3E31> 0.18 %", 
                               "19.5 <U+623C><U+3E31> 2.6 %", "0.05 <U+623C><U+3E31> 0.03 %", 
                               "0.47 <U+623C><U+3E31> 0.3 %", "1.19 <U+623C><U+3E31> 0.56 %"))  

sjPlot::tab_df(df1)

Запустите фрагмент, чтобы увидеть отформатированную таблицу.

    <table style="border-collapse:collapse; border:none;">

    <tr>

    <th style="border-top: double; text-align:center; font-style:italic; font-weight:normal; padding:0.2cm; border-bottom:1px solid black; text-align:left; ">

    Site

    </th>

    <th style="border-top: double; text-align:center; font-style:italic; font-weight:normal; padding:0.2cm; border-bottom:1px solid black; ">

    Coral_taxon

    </th>

    <th style="border-top: double; text-align:center; font-style:italic; font-weight:normal; padding:0.2cm; border-bottom:1px solid black; ">

    Estimate

    </th>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">

    Hanauma Bay

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    <i>Montipora</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    0.45 ±0.13 %

    </td>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">

    Hanauma Bay

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    <i>Pocillopora</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    0.43 ±0.18 %

    </td>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">

    Hanauma Bay

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    <i>Porites</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    19.5 ±2.6 %

    </td>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">

    Waikiki

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    <i>Montipora</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    0.05 ±0.03 %

    </td>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; ">

    Waikiki

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    <i>Pocillopora</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; ">

    0.47 ±0.3 %

    </td>

    </tr>

    <tr>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:left; border-bottom: double; ">

    Waikiki

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; border-bottom: double; ">

    <i>Porites</i> spp.

    </td>

    <td style=" padding:0.2cm; text-align:left; vertical-align:top; text-align:center; border-bottom: double; ">

    1.19 ±0.56 %

    </td>

    </tr>

    </table>
0 голосов
/ 06 августа 2020

Полагаю, вы хотели, чтобы названия видов были напечатаны с текстом spp. сразу после них. Поэтому не используйте вектор выражения внутри списка, а лучше создайте для этой цели правильные выражения. Вместо этого предложите использовать эту форму:

sum_dat_final2 <- list(Site = c("Hanauma Bay", "Hanauma Bay", "Hanauma Bay", "Waikiki", "Waikiki", "Waikiki"), 
                   Coral_taxon = expression( italic(Montipora)~ spp., 
                                             italic(Pocillopora)~spp., 
                                             italic(Porites)~spp., 
                                             italic(Montipora)~ spp.,  
                                             italic(Pocillopora)~spp.,  
                                             italic(Porites)~spp.),
                   Estimate = c("0.45 ± 0.13 %", "0.43 ± 0.18 %", "19.5 ± 2.6 %", "0.05 ± 0.03 %", "0.47 ± 0.3 %", "1.19 ± 0.56 %"))

При использовании модификации M - это результат вызова tab_df:

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<style>
html, body { background-color: white; }
table { border-collapse:collapse; border:none; }
caption { font-weight: bold; text-align:left; }
td {  }
.thead { border-top: double; text-align:center; font-style:italic; font-weight:normal; padding:0.2cm; }
.tdata { padding:0.2cm; text-align:left; vertical-align:top; }
.arc { background-color:#f2f2f2; }
.summary { padding-top:0.1cm; padding-bottom:0.1cm; }
.summarydata { text-align:center; }
.fixedparts { font-weight:bold; text-align:left; }
.randomparts { font-weight:bold; text-align:left; padding-top:.8em; }
.zeroparts { font-weight:bold; text-align:left; padding-top:.8em; }
.simplexparts { font-weight:bold; text-align:left; padding-top:.8em; }
.lasttablerow { border-bottom: double; }
.firsttablerow { border-bottom:1px solid black; }
.firstsumrow { border-top:1px solid; }
.labelcellborder { border-bottom:1px solid; }
.depvarhead { text-align:center; border-bottom:1px solid; font-style:italic; font-weight:normal; }
.leftalign { text-align:left; }
.centeralign { text-align:center; }
.firsttablecol { text-align:left; }
.footnote { font-style:italic; border-top:double black; text-align:right; }
.subtitle { font-weight: normal; }
.modelcolumn1 {  }
.modelcolumn2 {  }
.modelcolumn3 {  }
.modelcolumn4 {  }
.modelcolumn5 {  }
.modelcolumn6 {  }
.modelcolumn7 {  }
.col1 {  }
.col2 {  }
.col3 {  }
.col4 {  }
.col5 {  }
</style>
</head>
<body>
<table>
  <tr>
    <th class="thead firsttablerow firsttablecol col1">Site</th>
    <th class="thead firsttablerow col2">Coral_taxon</th>
    <th class="thead firsttablerow col3">Estimate</th>
  </tr>
  <tr>
    <td class="tdata firsttablecol col1">Hanauma Bay</td>
    <td class="tdata centeralign col2"><i>Montipora</i> spp.</td>
    <td class="tdata centeralign col3">0.45 ± 0.13 %</td>
</tr>
  <tr>
    <td class="tdata firsttablecol col1">Hanauma Bay</td>
    <td class="tdata centeralign col2"><i>Pocillopora</i> spp.</td>
    <td class="tdata centeralign col3">0.43 ± 0.18 %</td>
</tr>
  <tr>
    <td class="tdata firsttablecol col1">Hanauma Bay</td>
    <td class="tdata centeralign col2"><i>Porites</i> spp.</td>
    <td class="tdata centeralign col3">19.5 ± 2.6 %</td>
</tr>
  <tr>
    <td class="tdata firsttablecol col1">Waikiki</td>
    <td class="tdata centeralign col2"><i>Montipora</i> spp.</td>
    <td class="tdata centeralign col3">0.05 ± 0.03 %</td>
</tr>
  <tr>
    <td class="tdata firsttablecol col1">Waikiki</td>
    <td class="tdata centeralign col2"><i>Pocillopora</i> spp.</td>
    <td class="tdata centeralign col3">0.47 ± 0.3 %</td>
</tr>
  <tr>
    <td class="tdata firsttablecol lasttablerow col1">Waikiki</td>
    <td class="tdata centeralign lasttablerow col2"><i>Porites</i> spp.</td>
    <td class="tdata centeralign lasttablerow col3">1.19 ± 0.56 %</td>
</tr>
</table>

</body></html>
...