【问题标题】:Suppress warnings when reading data读取数据时禁止警告
【发布时间】:2020-04-12 02:52:01
【问题描述】:

我试图在读取数据时禁止显示警告。
它仅在我第一次调用该函数时发生,但我在命令行中启动我的程序,所以每次我都会收到警告。

library('xlsx',character.only = TRUE)
data <- read.xlsx("test/Classeur1.xlsx", sheetName="Sheet1", encoding="UTF-8")

我收到此警告消息:

警告:发生了非法反射访问操作
警告:org.apache.poi.util.SAXHelper 的非法反射访问(文件:/C:/Users/frus73117/Documents/R/win-library/3.6/xlsxjars/java/poi-ooxml-3.10.1-20140818。 jar) 到构造函数 com.sun.org.apache.xerces.internal.util.SecurityManager()
警告:请考虑将此报告给 org.apache.poi.util.SAXHelper
的维护者 警告:使用 --illegal-access=warn 启用对进一步非法反射访问操作的警告
警告:所有非法访问操作将在未来版本中被拒绝

我尝试了一些功能,例如:

data <- suppressMessages(read.xlsx("test/Classeur1.xlsx", sheetName="Sheet1", encoding="UTF-8"))
data <- suppressWarnings(read.xlsx("test/Classeur1.xlsx", sheetName="Sheet1", encoding="UTF-8"))

但没有任何改变。
任何帮助或建议将不胜感激!

【问题讨论】:

  • 这些警告不是由read.xlsx 抛出的(在这种情况下suppressWarnings() 会起作用),而是来自底层的Java 代码。 capture.output() 可能工作...
  • 你能给我们看看文件“Classeur1.xlsx”吗?
  • 我试过这个功能,即使invisible(capture.output(...)) 似乎也没有抑制这些警告... xlsx 文件是空的用于测试,但它与完整文件的结果相同。

标签: r xlsx suppress-warnings


【解决方案1】:

只是猜测,但请尝试capture.output(type="message", ...)。来自?capture.output

发送到‘stderr()’的消息(包括来自‘message’的消息, ‘warning’ 和 ‘stop’) 被 ‘type = "message"’ 捕获。笔记 这可能是“不安全的”,只能小心使用。

【讨论】:

  • 我在文档中看到过,但是对这个问题不起作用。
  • 这令人惊讶/有趣。 type="message" 应该捕获发送到 stderr 的文本,但它可能只捕获 R (而不是外部,例如 Java 程序)发送到 stderr 的文本。除了升级您的 Java 安装(如上面 cmets 中的一些链接材料中所建议的那样),我唯一的建议是尝试不同的 XLS 读取包(例如readxl::read_excel() ...)
猜你喜欢
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 2011-08-01
  • 2017-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多