运行dplyr :: left_join时,抑制注释“加入...”

时间:2015-03-20 13:54:58

标签: r knitr dplyr

这可能很简单,但我无法在任何地方找到答案......

当我使用以下代码时

library("nycflights13")
result <- flights %>% 
    dplyr::select(year:day, hour, origin, dest, tailnum, carrier) %>% 
    dplyr::left_join(airlines)

以下评论在屏幕上显示:

> Joining by: "carrier"

这在交互式会话中肯定是有用的信息,但是当我使用left_join作为较长脚本的一部分时,我通常不希望回应这种类型的注释(特别是当脚本生成html报告通过knitr,因为那个html也会包含一条打印的Joining by: "carrier"行。

如何阻止left_join(等)打印此评论?

谢谢,彼得

1 个答案:

答案 0 :(得分:4)

@Khashaaa的评论表明了一种防止该消息的方法,如果您事先知道绑定变量,那么这种方法很有用且简洁。有关如何使用一个或多个变量执行此操作,请参阅?dplyr::join。给定示例的语法是

left_join(airlines,by="carrier")

由于dplyr代码正在使用R message()函数发出Joining by: *消息,因此您可以使用R&#39 {1}}包装器suppressMessages()(或任何其他left_join联接)来禁止这些消息。有关详细信息,请参阅dplyr。 OP示例实际上返回两种消息,

?message

可以使用>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 包装器

来抑制第一条消息
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 ;有几种方法可以处理这种情况。一种方法,如果你选择像上一条消息一样压制它,就是添加另一个包装器,

?warning