使用 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.JdbcOdbc...