如何抑制R函数自动输出的绘图?以sensemakr包ovb_contour_plot为例
解决方案
方案1:使用函数内置参数(推荐)
sensemakr包的ovb_contour_plot自带控制绘图输出的逻辑参数,调用时添加plot = FALSE即可关闭自动绘图,仅返回所需的数据集:
require(sensemakr) estimate <- 0.091321 est_se <- 0.008321 dof <- 10000 sense_df <- sensemakr::ovb_contour_plot(estimate = estimate, se = est_se, dof = dof, plot = FALSE)
该方案无需额外设置,无空白残留,适配绝大多数使用场景。
方案2:旧版本包兼容方案
如果你使用的包版本未提供plot参数,可通过「空绘图设备+代码块参数」组合实现完全抑制:
- 代码块头部设置为
{r, fig.keep = "none"},彻底丢弃该代码块的所有绘图输出,不会遗留空白区域 - 调用函数时临时开启空设备,运行后关闭设备:
require(sensemakr) estimate <- 0.091321 est_se <- 0.008321 dof <- 10000 pdf(file = NULL) sense_df <- sensemakr::ovb_contour_plot(estimate = estimate, se = est_se, dof = dof) dev.off()
方案3:直接调用底层计算逻辑
如果完全不想触发任何绘图相关调用,可以直接提取ovb_contour_plot内部的核心数据生成逻辑,自行生成所需的sense_df:
require(sensemakr) estimate <- 0.091321 est_se <- 0.008321 dof <- 10000 # 核心逻辑提取自ovb_contour_plot源码 r2dz_seq <- seq(0, 0.3, length.out = 100) r2yz_seq <- seq(0, 0.3, length.out = 100) sense_df <- expand.grid(r2dz.x = r2dz_seq, r2yz.dx = r2yz_seq) sense_df$adjusted_estimate <- with(sense_df, adjusted_estimate(estimate, r2dz.x, r2yz.dx)) sense_df$adjusted_t <- with(sense_df, adjusted_t(estimate, est_se, r2dz.x, r2yz.dx, dof)) sense_df$adjusted_lower <- with(sense_df, adjusted_ci(estimate, est_se, dof, r2dz.x, r2yz.dx)[,1]) sense_df$adjusted_upper <- with(sense_df, adjusted_ci(estimate, est_se, dof, r2dz.x, r2yz.dx)[,2])
内容的提问来源于stack exchange,提问作者C.Robin
相关产品推荐
相关产品推荐

