r - 将绘图添加到文档在函数内部不起作用
问题描述
不知道问题的原因在这里......
代码在我内联函数时有效,但在我调用函数时无效......
作品:
library(officer)
data <- data.frame(test=c(1:10),test2=rep(c("a","b"),5))
doc <- read_docx()
# Inlined function
tabledata <- data$test2
d <- table(tabledata)
doc <-body_add_plot(doc, value = plot_instr(code = {barplot(d)}))
print(doc,target="test.docx")
不起作用:
library(officer)
data <- data.frame(test=c(1:10),test2=rep(c("a","b"),5))
doc <- read_docx()
createBarPlot <- function(){
tabledata <- data$test2
d <- table(tabledata)
doc <-body_add_plot(doc, value = plot_instr(code = {barplot(d)}))
}
createBarPlot()
print(doc,target="test.docx")
错误信息:
Error in barplot(d) : object 'd' not found
Calls: createBarPlot ... tryCatch -> tryCatchList -> eval -> eval -> barplot
Backtrace:
█
1. └─global::createBarPlot()
2. └─officer::body_add_plot(...)
3. ├─base::tryCatch(...)
4. │ └─base:::tryCatchList(expr, classes, parentenv, handlers)
5. ├─base::eval(value$code)
6. │ └─base::eval(value$code)
7. └─graphics::barplot(d)
Execution halted
知道为什么将这段代码放在函数中会导致它失败吗?
编辑:所以在@Lmc 在评论中的建议之后,我更改了我分配d
给的行d <<- table(tabledata)
- 它起作用了!这对我来说有点意义,因为 doc (它是一个全局的)被修改但无权访问d
. 但是,如果有人可以/想要更详细地解释,我很乐意学习!
解决方案
推荐阅读
- r - 使用递增变量循环并改变多个列
- jasper-reports - 生成碧玉报告时的空行 6.11
- google-search-console - 谷歌站点地图:错误
- scikit-learn - SVR 超参数选择和可视化
- json - 如果 json 无效,如何将字符串转换为 json 或映射以在 dart 中配对
- docker - Docker - 错误:无法从非 TTY 设备执行交互式登录(GCP 服务帐户)
- ionic-framework - 将项目从 Windows 10 复制到 MacOS Catalina 并使用 Visual Studio Code - Ionic & Angular 打开
- google-chrome - 如何在 2020+ 中禁用 Google Chrome 扩展程序自动更新
- javascript - 我正在尝试使用 javascript 将图像替换为另一张图像,但它不起作用。我是 javascript 新手
- javascript - 在 JavaScript 中显示模式不平滑过渡