首页 > 解决方案 > sprintf在R中的函数内部静音

问题描述

我正在尝试使用 sprintf 访问我在 R 中调试的代码的内部变量。

sprintf("sprintf OUTSIDE a function: easy as %.2f",pi)
myFunc <- function() {
  sprintf("sprintf INSIDE a function: easy as %.2f",pi)
  print("print still works")
}
myFunc()

这产生

> sprintf("sprintf OUTSIDE a function: easy as %.2f",pi)
[1] "sprintf OUTSIDE a function: easy as 3.14"
> myFunc <- function() {
+   sprintf("sprintf INSIDE a function: easy as %.2f",pi)
+   print("print still works")
+ }
> myFunc()
[1] "print still works"

我在 RStudio 中发现了一些更好的调试功能,但我仍然很好奇......

为什么 sprintf 在函数内部停止工作?

标签: rdebugging

解决方案


return如果它不是最后一行,我们可以使用

myFunc <- function() {
  return(sprintf("sprintf INSIDE a function: easy as %.2f",pi))
   print("print still works")  
 }

或者重新排列语句的顺序

myFunc <- function() {
  print("print still works")
 sprintf("sprintf INSIDE a function: easy as %.2f",pi)

  }

myFunc()
#[1] "print still works"
#[1] "sprintf INSIDE a function: easy as 3.14"

如果我们只需要print,那么sprintfprint

myFunc <- function() {
   print(sprintf("sprintf INSIDE a function: easy as %.2f",pi))
   print("print still works")  
 }

推荐阅读