当我直接将某些内容打印到控制台(键入一些变量名称,例如x,而不是使用打印功能print(x))时,我希望它的打印方式与正常打印方式不同.我的想法是打印是通过某些功能完成的.如果是这种情况,我所要做的就是用我自己的函数替换该函数.但是,我无法弄清楚打印的内部功能是什么.
这是我到目前为止所尝试的内容.
.real_cat = cat
cat = function(x) .real_cat("*** cat ***", x, "\n")
cat(2345)
2345 # no
Run Code Online (Sandbox Code Playgroud)
打印到控制台不是通过cat.怎么样print?
.real_print = print
print = function(x) .real_cat("*** print ***", x, "\n")
print(2345)
2345 # no
"hello" # no
I(2345) # yes
Run Code Online (Sandbox Code Playgroud)
有些类,比如AsIs,打印到控制台print,但其他类,如numeric或character不是.:-(
c("print.numeric", "print.character", "print.AsIs", "print.default") %in% methods("print")
# FALSE FALSE TRUE TRUE
Run Code Online (Sandbox Code Playgroud)
结果print甚至没有单独的打印方法numeric或character.使用print方法将具有方法的类打印到控制台print.但是没有print …