小编Dav*_*sak的帖子

在 R 中,如何通过自定义打印函数可靠地打印对象的名称?

我在 R 中创建了一个类,并尝试为该类创建一个打印函数。我希望打印函数打印传递给打印函数的对象的名称。使用标准deparse(substitute())我可以获取变量的名称,这在我print()直接调用函数时有效。但当我只是从 R Studio 运行变量时它不起作用。它显然正在调用我的打印函数。但有一些间接导致它丢失变量名称。这是一个例子:

# Define class 'myobj'
myobj <- function(val) {
  
  obj <- structure(list(), class = c("myobj", "list")) 
  
  obj$value = val
  
  return(obj)
}

# Write custom print function for 'myobj' class
#' @export
print.myobj <- function(x, ...) {
  
  nm <- deparse1(substitute(x, env = environment()))
  cat(paste0("My object name: ", nm, "\n"))
  cat(paste0("My object value: ", x$value, "\n"))
      
  invisible(x)
}

myInstance <- myobj(123)

# Prints name and value.  
print(myInstance)

#> My object name: myInstance
#> …
Run Code Online (Sandbox Code Playgroud)

printing console r

6
推荐指数
1
解决办法
935
查看次数

标签 统计

console ×1

printing ×1

r ×1