2

我正在使用dunn.test()from the package dunn.test,我不希望它向 std 输出(控制台)打印任何内容,因为我这样做了很多次,我想看看在此之前是否有任何警告。

所以我取消了kruskal wallis test的打印,以及像这样的表格的打印——

dunn.test(x = data, g = grouping, kw = FALSE, table = FALSE)

但是每次测试后它仍然打印一个换行符,有什么办法可以防止它打印新行吗?还是一种从打印中捕获换行符的方法?

可重复的示例dunn.test-

library(dunn.test)
df <- data.frame(d = c(rnorm(100), rnorm(100, 5)),
                 group1 = rep(c('a','b','c','d'),50),
                 group2 = rep(c('a','b','c','d'),each =50))
test1 <- dunn.test(x = df$d, df$group1)
test2 <- dunn.test(x = df$d, df$group2)
test3 <- dunn.test(x = df$d, df$group1, kw = FALSE)
test4 <- dunn.test(x = df$d, df$group1, kw = FALSE, table = FALSE) # still prints a newline
4

2 回答 2

4

您可以使用该capture.output() 功能隐藏输出

capture.output(dunn.test(x = df$d, df$group1))

仍将显示任何引发的错误或警告。

于 2017-02-15T10:24:05.693 回答
0

这个答案有效,但捕获的输出仍然被打印出来。这是对我有用的代表:

library(dunn.test)

capture.output(df <-
  as.data.frame(dunn.test(
    x = iris$Sepal.Length,
    g = iris$Species,
    table = FALSE,
    kw = FALSE,
    label = FALSE,
    alpha = 0.05
  )), file = "NULL")

df
#>       chi2         Z            P   P.adjusted            comparisons
#> 1 96.93744 -6.106326 5.097522e-10 5.097522e-10    setosa - versicolor
#> 2 96.93744 -9.741785 1.000049e-22 1.000049e-22     setosa - virginica
#> 3 96.93744 -3.635459 1.387433e-04 1.387433e-04 versicolor - virginica

reprex 包(v0.3.0.9001)于 2020 年 4 月 17 日创建

请注意,没有打印任何消息,并且输出也分配给了数据框。

于 2020-04-17T21:25:24.647 回答