使用 data.table 时,使用参数渲染多个 Rmarkdown 报告失败,并显示“错误:`:=` 只能在准引用参数中使用”

如何解决使用 data.table 时,使用参数渲染多个 Rmarkdown 报告失败,并显示“错误:`:=` 只能在准引用参数中使用”

大家早上好,

如上所述,我正在尝试为每个报告呈现具有不同参数的多个 Rmarkdown 报告。基本上我有一个 .csv 文件文件夹,我必须清理它。我已将所有步骤打包在一个 .Rmd 文件中,因为这样可以清理数据并生成记录结果的简短报告。一些数字,一些统计数据,没有什么特别引人注目的,只是对清洁过程的概述。

由于每个 .csv 文件略有不同,我必须调整一些参数。这是简单的部分。我在“R for Data Science”一书中找到了一些不错的代码,你可以在这里找到。 https://r4ds.had.co.nz/r-markdown.html#parameters

这是我的版本:

library(dplyr)
library(stringr)
library(purrr)

# Create a vector with names
files <-  c("dataframe","datatable")


# Create a tibble with filenames and lists of parameters
reports <- tibble(
  filename = str_c(files,".html"),params = map(files,~ list(name = .,factor = if_else(. == "dataframe",2.5,5))))

  

#-------------------------------------------------------------------

# make reports
reports <- reports %>%
  select(output_file = filename,params) %>% 
  purrr::pwalk(rmarkdown::render,input = "template_datatable.Rmd")


一切正常,当 .Rmd 文件使用 data.frames 时。 由于我的 .csv 每个大约 1 GB,我会使用 data.table 来加快速度。但是一旦我的 .Rmd 文件包含一些 data.table 代码,我就会收到此错误消息:

Error: `:=` can only be used within a quasiquoted argument

如果我只用 rmarkdown::render(input = "template_datatable.Rmd",output_file = "test.html",params = list(name = "datatable",carat = 5)) 渲染一个文件,带有 data.table 代码的 .Rmd 可以正常工作。

我的问题是。 是什么导致了这个错误?有没有办法修复它?

这是我使用 data.frames 的 .Rmd 代码

    ---
    title: "A report for `r params$name`"
    params:
      name: "name"
      factor: 1
    output:
        bookdown::html_document2:
        fig_caption: yes
        toc: yes
        toc_float: true
        code_folding: "hide"
    ---
    
    ```{r setup,include=FALSE}
    
    # Setup Chunk
    
    # Some knitr options
    knitr::opts_chunk$set(echo = FALSE)
    
    # Packages
    library(dplyr)
    library(ggplot2)
    
    ```
    
    
    ```{r dataimport}
    
    df <- data.frame(A = seq(1,100),B = seq(1,100))
    
    df <- df %>%
      mutate(C = B * params$factor)
    
    ```
    
    
    ```{r makePlot}
    
    ggplot(df,aes(A,C)) + 
      geom_line()
    
    ```

以及我使用 data.tables 的 .Rmd 代码

    ```
    ---
    title: "A report for `r params$name`"
    params:
      name: "name"
      factor: 1
    output:
      bookdown::html_document2:
        fig_caption: yes
        toc: yes
        toc_float: true
        code_folding: "hide"
    ---
    
    ```{r setup,include=FALSE}
    
    # Setup Chunk
    
    # Some knitr options
    knitr::opts_chunk$set(echo = FALSE)
    
    # Packages
    library(data.table)
    library(ggplot2)
    
    ```
    
    
    ```{r dataimport}
    
    dt <- data.table(A = seq(1,100))
    
    dt <- dt[,C := B*params$factor]
    
    ```
    
    
    ```{r makePlot}
    
    ggplot(dt,C)) + 
      geom_line()
    
    ```

感谢您的帮助。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?