如何为print泛型添加print.message方法并仅输出目标内容(仅调用指定模块)
解决方案:自定义print.message方法实现指定输出
问题背景
当前环境:
getwd()返回"C:/Users/Tom/Documents/Tom_Levers_Git_Repository"- 仓库下有
TomLeversRBox目录,包含calculate_probability.R和print.message.R两个模块 - 执行
box::use(TomLeversRBox/calculate_probability[calculate_probability])并调用calculate_probability()后,输出带属性的完整信息,需求是仅显示Probability: 0.95,且仅使用上述box::use语句加载模块。
核心原因
print.message方法仅存在于print.message模块的命名空间内,未被注册到全局的print泛型系统中,导致R默认使用print.default打印对象,显示了字符串及属性信息。
解决步骤
修改 calculate_probability.R 模块,在导入print.message模块后,将其内部的print.message方法注册到全局环境,让R的泛型系统能识别该方法:
box::use(./print.message) box::use(stats[pnorm]) # 将print.message方法注册到全局print泛型 print.message <- print.message::print.message #' @export calculate_probability <- function() { message <- paste("Probability: ", round(pnorm(1.644854, 0, 1, lower.tail = TRUE), 2), sep = "") class(message) <- "message" return(message) }
验证效果
- 在RStudio控制台执行:
install.packages("box") box::use(TomLeversRBox/calculate_probability[calculate_probability]) calculate_probability() - 输出将仅显示:
Probability: 0.95
内容的提问来源于stack exchange,提问作者Tom Lever
相关产品推荐
相关产品推荐

