创建 R 中函数返回的所有消息、警告和错误的列表

问题描述 投票:0回答:1

我在 R 中有一个函数可以调用其他函数。有时,这些函数可以返回相同的消息。我只想将消息打印一次。处理这个问题的最佳方法是什么?

在下面的示例中,

functionC
将打印“The value is 5”。如果 b 和 c 的参数为 5,则打印两次。我只想打印一次。

functionA <- function(a){
  
  if(a==5){
    message("The value is 5.")
  }
  return(a-2)
}

functionB <- function(b){
  
  if(b==5){
    message("The value is 5.")
  }
  return(b+7)
}

functionC <- function(a,b){
  a <- functionA(a)
  b <- functionB(b)
  c <- rbind(a,b)
  return(c)
}

functionC(5,5)
r error-handling suppress-warnings
1个回答
0
投票

抑制 functionA/functionB 警告并包含新的“a 和/或 b is 5”警告是否适合您的用例?例如

functionA <- function(a){
  if(a==5){
    message("The value is 5.")
  }
  return(a-2)
}

functionB <- function(b){
  if(b==5){
    message("The value is 5.")
  }
  return(b+7)
}

functionC <- function(a,b){
  a <- functionA(a)
  b <- functionB(b)
  c <- rbind(a,b)
  return(c)
}
functionC(5,5)
#> The value is 5.
#> The value is 5.
#>   [,1]
#> a    3
#> b   12

functionD <- function(a,b){
  if(a==5 | b==5){
    message("The value of a and/or b is 5.")
  }
  a <- suppressMessages(functionA(a))
  b <- suppressMessages(functionB(b))
  c <- rbind(a,b)
  return(c)
}
functionD(5,5)
#> The value of a and/or b is 5.
#>   [,1]
#> a    3
#> b   12

创建于 2023-08-18,使用 reprex v2.0.2

© www.soinside.com 2019 - 2024. All rights reserved.