使用包裹ph_with_vg_at的函数时出错

时间:2017-12-15 22:08:40

标签: r encoding officer

使用官方功能ph_with_vg_at时,我收到以下错误:

Error in dml_pptx(file = dml_file, width = width, height = height, offx = left, : argument "height" is missing, with no default

我认为问题是我正在使用的“funWorkaround”包装器代替ph_with_vg_at。此函数可确保在写入PPT时正确编码某些字符(窃取此函数here)。当我使用ph_with_vg_at而不是funWorkaround时,我没有收到错误。

直到今天,当我更新了所有包裹时,这一切都完美无缺。所以不确定这是一个官员/ rvg问题,还是一个管道问题。或者以上都没有!

我正在寻找要么解决这个错误,要么在从R写到PPT时找到另一种保留字符编码的方法。谢谢!

funWorkaround <- function(x, code, left, top, height, width, ...) {
  # Re-Store old encoding on end
  sOldEnc <- getOption("encoding")
  on.exit(options(encoding=sOldEnc))

  # Modify encoding
  options(encoding="UTF-8")

  # Create plot
  return(ph_with_vg_at(x, code, left, top, height, width, ...))
}

ppt_test <- ppt_test %>% 
  add_slide(layout = "Two Content", master = "Office Theme") %>% 
  ph_with_text(type = "title", str = "Satisfaction with Issue Details") %>% 
  funWorkaround(code = print(issuedetails.plot), 
                left = 0.46, 
                top = 2, 
                width = 11.8, 
                height = 4.71)

2 个答案:

答案 0 :(得分:0)

通过使用直接的ph_with_vg_at函数而不是funWorkaround包装器来解决这个问题。为了确保我获得正确的连接编码,我将以下内容放在我的套件创建脚本的开头:

oldEnc = getOption(“encoding”) options(encoding =“UTF-8”)

然后我把它放在脚本的末尾:

选项(encoding = oldEnc)

这会在构建PPT时将连接设置移动到UTF-8,但确保在构建PPT文件后它返回到原始native.enc。否则,如果设置仍为UTF-8,则可能会遇到无法预料的问题(如读取数据)。

答案 1 :(得分:0)

您是否正在使用rvg软件包的更高版本?有一个新参数ggobj,默认情况下是第三个参数。如果您只是在变通方法中命名参数,它应该可以工作:

funWorkaround <- function(x, code, left, top, height, width, ...) {
  # Re-Store old encoding on end
  sOldEnc <- getOption("encoding")
  on.exit(options(encoding=sOldEnc))

  # Modify encoding
  options(encoding="UTF-8")

  # Create plot
  return(ph_with_vg_at(x, code=code, left=left, top=top, height=height, width=width, ...))
}