如何在blogdown/knitr中抑制sf::st_read读取shapefile时的消息?
解决sf::st_read读取Shapefile时消息无法隐藏的问题
我之前也碰到过一模一样的情况——明明在knitr代码块里加了message = FALSE,但用sf::st_read读Shapefile时还是会跳出几条消息,特别影响博客的整洁度。下面给你两个靠谱的解决思路:
方法一:用sf自带参数直接屏蔽消息
这是最精准有效的方式,st_read()函数本身就自带了quiet参数,把它设为TRUE就能彻底关掉读取时的状态提示、字段信息这类消息。比如:
sf::st_read("你的Shapefile路径.shp", quiet = TRUE)
这个方法比依赖knitr选项更直接,毕竟是从函数源头抑制消息输出。
方法二:用knitr+R内置函数兜底(针对特殊情况)
如果有些特殊场景下sf的quiet参数没覆盖到消息,你可以试试用suppressMessages()把st_read的调用包裹起来,比如:
suppressMessages(sf::st_read("你的Shapefile路径.shp"))
另外你提到的knitr选项页面里,message = FALSE其实是用来抑制R中message()函数输出的内容,但sf的部分消息是用cat()这类函数输出的,这类输出message = FALSE管不到。如果碰到这种情况,你可以试试在代码块选项里加results = 'hide',不过要注意这个会同时隐藏代码的正常输出结果,只适合不需要展示输出的场景。
至于你问的是否能在knitr选项页面找到解决办法:页面里的message、warning等选项是针对标准R消息/警告的,而sf的特殊消息需要结合函数自身参数或者额外的抑制函数来处理,两者是互补的方案。
内容的提问来源于stack exchange,提问作者ixodid
相关产品推荐
相关产品推荐

