r - 在 Markdown 中将列表对象转换为无序列表

标签 r list markdown r-markdown knitr

我有一个包含字符向量的列表。我想在 RMarkdown 文档中创建一个无序列表。我试图通过遍历列表并将输出粘贴到 Markdown 列表中来完成此操作。在 knitr打印结果 'asis' .这是一个玩具示例。

test <- list(x = c('a', 'b', 'c'), y = c('d', 'e'))

我想创建一个这样的无序列表:
- x
    - a
    - b
    - c
- y
    - d
    - e

我尝试将 for 循环与 cat 结合使用来做到这一点。和 paste0 .
cols <- names(test)

for (columns in names(test)) {
  cat(paste0("- ", names(test[columns]), '\n', '    ', 
             "- ", test[[cols[columns]]], '\n')) 
}

哪个输出”
- x
    - 
- y
    - 

我希望得到一些帮助来获得我上面描述的所需的无序列表。

最佳答案

这是一个不需要循环的解决方案。 List 和 yaml 文件很相似,所以你可以把它转换成 yaml(稍微修改一下)和 cat .

test <- list(A = c("a", "b", "c"), B = c("d", "e"), C = 1:5)
cat(gsub("^!omap\n|:", "", yaml::as.yaml(test, omap = TRUE)))

解释:
  • 使用 as.yaml 将列表转换为有序的 yaml函数来自 yaml package .
  • 使用 gsub 删除 omap header .
  • cat结果。

  • enter image description here

    你也可以把它放在一个自定义函数中,这样你就不会泛滥代码:
    catList <- function(inputList) {
        cat(gsub("^!omap\n|:", "", yaml::as.yaml(inputList, omap = TRUE)))
    }
    catList(test)
    

    关于r - 在 Markdown 中将列表对象转换为无序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52335498/

    相关文章:

    emacs - 组织模式下的内联代码

    visual-studio-code - VS Code Jupyter Notebook Markdown 显示字体

    c# - 检查两个列表中相同的元素

    r - 基于 R 中不同数据框的值进行子集化

    r - Tidymodels tune_grid : "Can' t subset columns that don't exist"when not using formula

    r - 在 R 中创建成对乘积矩阵

    c# - 如何将列表转换为数据表

    python - 在 python 中,从字典列表中删除列表的好方法

    用于动态文档的 Python 库

    r - 如何从R中的1行表转换向量