【发布时间】:2021-07-23 17:11:15
【问题描述】:
我有一个用于生成报告的 .RMD 文件。在文档的开头,有一个代码块在远程数据库上执行查询并返回一些数据作为输出(典型的从不同表的连接中选择查询)。正在生成的数据是相当固定的,因为我正在从某个日期间隔检索数据并且我正在执行分析的这个日期间隔没有改变。
每次我在 .RMD 文件中进行与外观相关的更改并编织它时,它都会运行此查询,该查询需要超过 2 分钟才能运行,因为正在返回相当多的数据。我不希望这种情况发生,因为我正在执行分析的基础数据根本没有改变。
我如何确保仅此一个块不会一直评估?我试过把eval = FALSE
但是我收到以下错误:
Error in UseMethod("mutate") : no applicable method for 'mutate' applied to an object of class "function" Calls: <Anonymous> ... withCallingHandlers -> withVisible -> eval -> eval -> %>% -> mutate Execution halted`<br><br>
对于上下文,df 是通过 dbExecuteQuery() 执行查询后返回的数据帧。一旦执行了 eval = FALSE 的块,我就有另一个块对其执行 mutate() 。这就是产生错误的地方。
eval=FALSE 的代码块只是一个通用的 sql 执行代码块。块的内容是这样的:
query <- 'select * from table1 join table2'
query2 <- 'select * from table3'
df1 <- dbGetQuery(conn,query)
df2 <- dbGetQuery(conn,query2)
df < - left_join(df1,df2)
产生错误的下一个代码块是这样的:
df <- df %>% mutate(newcol = is.na(somecol))
我在 Stackoverflow 上找到了一个可以解释我的问题但没有令人满意的解决方案的答案。
SF帖子链接:error knitting flex dashboard rmarkdown dplyr
【问题讨论】:
标签: r r-markdown knitr