在 R 中,如何使用列创建格式化字符串以解析为 Word?

问题描述 投票:0回答:1

我正在尝试帮助一些朋友创建我们州发现的植物物种的格式化“清单”。

数据如下:

dat<- as.data.frame(cbind(clade = c("Clade x", "Clade x", "Clade x", "Clade y", "Clade y", "Clade z", "Clade z"),
family = c("FAMILY A", "FAMILY A", "FAMILY B", "FAMILY C", "FAMILY C", "FAMILY D", "FAMILY E"),
taxon = c("Juniperus osteosperma", "Ephedra viridis", "Achillea millefolium", "Artemisia tridentata var. tridentata", "Iva axillaris", "Pleiacanthus spinosus", "Packera multilobata"), 
                            life_history = c("tree", "shrub", "forb", "shrub", "forb", "forb", "forb"),
                            County = c("All counties", "WP", "WP, CK", "EU, WP, WA", "CK", "DG", "DG, CC"), 
                            non.native = c("", "", "Non-native", "", "Non-native", "", "")))

我能够使用以下方法将每个条目所需的列组合成一个字符串:

entry<- paste0(dat$taxon, ". ",
               dat$life_history, ". ",
               dat$County, ". ",
               ifelse(!is.na(dat$non.native), paste0(dat$non.native, "")))
entry

我希望能够将其解析为一个word文档,其中每一行都成为自己的条目,并且条目按进化枝然后按家族进行分组。我还想格式化输出的文本字符串的某些部分(例如,分类单元中除“var.”之外的所有单词都应为斜体)。

我正在寻找的输出将是这样的:

我尝试使用 dplyr 按进化枝和家族进行分组,并使用 for 循环为每行获取单独的“条目”,但似乎无法使 for 循环识别分组。

dat %>% group_by(clade, family) %>% 
  for (i in 1:nrow(dat))
  {
entry<- paste0(dat$taxon, ". ",
               dat$life_history, ". ",
               dat$County, ". ",
               ifelse(!is.na(dat$non.native), paste0(dat$non.native, "")))
entry
}

这会导致错误:“for (. in i) 1:nrow(dat) 中出现错误: 4 个参数传递给 'for',需要 3"

我还阅读了很多有关如何更改图中字体的文档以及有关 Rmarkdown 的文档,但我不知道如何将这些部分组合在一起。

特别给我带来麻烦的部分是:

a)按进化枝和科对条目进行分组

b) 仅格式化文本字符串的某些部分

c) 将其解析为 Word 文档

如有任何帮助,我们将不胜感激。

r ms-word formatting
1个回答
0
投票

您可以尝试转换为列表列表,然后写入文件。此代码片段使用函数

capture.output()
将列表写入文件。

#create the clade list
output <- split(dat, dat$clade)

#create the family list
out2 <-lapply(output, function(x){
   split(x, x$family)
})

#write the list to file
capture.output(out2, file = "My New File.txt")

没有达到您所期望的整洁输出,而是一个开始。

$`Clade x`
$`Clade x`$`FAMILY A`
    clade   family                 taxon life_history       County non.native
1 Clade x FAMILY A Juniperus osteosperma         tree All counties           
2 Clade x FAMILY A       Ephedra viridis        shrub           WP           

$`Clade x`$`FAMILY B`
    clade   family                taxon life_history County non.native
3 Clade x FAMILY B Achillea millefolium         forb WP, CK Non-native


$`Clade y`
$`Clade y`$`FAMILY C`
    clade   family                                taxon life_history     County non.native
4 Clade y FAMILY C Artemisia tridentata var. tridentata        shrub EU, WP, WA           
5 Clade y FAMILY C                        Iva axillaris         forb         CK Non-native


$`Clade z`
$`Clade z`$`FAMILY D`
    clade   family                 taxon life_history County non.native
6 Clade z FAMILY D Pleiacanthus spinosus         forb     DG           

$`Clade z`$`FAMILY E`
    clade   family               taxon life_history County non.native
7 Clade z FAMILY E Packera multilobata         forb DG, CC  

     
© www.soinside.com 2019 - 2024. All rights reserved.