r - 如果未分配则打印

标签 r

如何在函数中写入一种检测输出是否被分配( <- )的方法?原因是我想打印一条消息,如果它没有被分配,只是进入控制台,但如果它被分配,我希望它不打印消息。

这是一个虚拟示例以及我希望它的行为方式:

fun <- function(x) {
    if (being_assigned) {
        print("message")
    }
    return(x)
}

#no assignment so message prints 
> fun(6)  
[1] "message"
[1] 6

#assignment so message does not prints
> x <- fun(6)
being_assigned在函数中是我想检测但不知道如何检测的假想未知条件。

最佳答案

我认为你能做的最好的事情就是为函数返回的对象定义一个特殊的打印方法:

## Have your function prepend "myClass" to the class of the objects it returns
fun <- function(x) {
    class(x) <- c("myClass", class(x))
    x
}

## Define a print method for "myClass". It will be dispatched to 
## by the last step of the command line parse-eval-print cycle.
print.myClass <- function(obj) {
    cat("message\n")
    NextMethod(obj)
}

> fun(1:10)
message
 [1]  1  2  3  4  5  6  7  8  9 10
attr(,"class")
[1] "myClass"
>
> out <- fun(1:10)
> 

关于r - 如果未分配则打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056392/

相关文章:

r - ggplot2 中两种美学和 geom_abline 的图例

正则表达式返回文件名,删除路径和文件扩展名

r - 如何在全尺寸窗口中运行 R Shiny App?

r - 在R中创建连续的热图

r - 使用前缀约定调用 `~`

r - ggplot2 位置 ='dodge' 生成的条太宽

R:基于一列按两个条件对数据框进行子集

r - 相同标签的相同颜色的 donut chart

r - Python Pandas 与 R. 转换代码的简洁性

r - 是否可以仅根据其位置指定的参数类来分派(dispatch) S3 方法?