这可能很简单,但我无法在任何地方找到答案......
当我使用以下代码时
library("nycflights13")
result <- flights %>%
dplyr::select(year:day, hour, origin, dest, tailnum, carrier) %>%
dplyr::left_join(airlines)
Run Code Online (Sandbox Code Playgroud)
以下评论在屏幕上回显:
> Joining by: "carrier"
Run Code Online (Sandbox Code Playgroud)
这在交互式会话中肯定是有用的信息,但是当我left_join作为较长脚本的一部分使用时,我通常不希望回应这种类型的注释(尤其是当脚本通过knitr生成html报告时,因为该html然后还将包含一条印刷Joining by: "carrier"线.
如何阻止left_join(等)打印此评论?
谢谢,彼得
@Khashaaa的注释指示一种防止消息的方法,如果您事先知道绑定变量,该方法将非常有用且简洁。请参阅?dplyr::join有关如何使用一个或多个变量执行此操作。给定示例的语法为
left_join(airlines,by="carrier")
Run Code Online (Sandbox Code Playgroud)
因为dplyr代码使用R的message()函数来发出Joining by: *消息,所以可以suppressMessages()在left_join(或任何其他dplyr联接)周围使用R的包装程序来禁止显示这些消息。请参阅?message以获取更多信息。实际上,OP示例返回两种消息,
>library("nycflights13")
>library("dplyr")
>result <- flights %>%
+ select(year:day, hour, origin, dest, tailnum, carrier) %>%
+ left_join(airlines)
Joining by: "carrier"
Warning message:
In left_join_impl(x, y, by$x, by$y) :
joining factor and character vector, coercing into character vector
Run Code Online (Sandbox Code Playgroud)
可以使用suppressMessages()包装器禁止显示第一条消息
>suppressMessages(result <- flights %>%
+ select(year:day, hour, origin, dest, tailnum, carrier) %>%
+ left_join(airlines))
Warning message:
In left_join_impl(x, y, by$x, by$y) :
joining factor and character vector, coercing into character vector
Run Code Online (Sandbox Code Playgroud)
第二条消息是诊断警告消息。有关?warning详细信息,请参见。有几种方法可以处理这种情况。如果您选择像上一条消息一样隐藏它,一种方法是添加另一个包装器,
> suppressWarnings(suppressMessages(result <- flights %>%
+ select(year:day, hour, origin, dest, tailnum, carrier) %>%
+ left_join(airlines)))
>
Run Code Online (Sandbox Code Playgroud)