微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将绘图添加到文档在函数

如何解决将绘图添加到文档在函数

不确定问题的原因是什么...

代码在我内联函数时有效,但在我调用函数时无效...

作品:

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),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。但如果有人可以/想要更详细地解释,我很乐意学习!

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