问题描述
我正在为数据框中的 2 列数据绘制 2 个累积分布。我的代码是:
library(Envstats)
cdfCompare(Ratio1,Ratio2 discrete = FALSE,prob.method = ifelse(discrete,"emp.probs","plot.pos"),plot.pos.con = NULL,distribution = "norm",param.list = NULL,estimate.params = is.null(param.list),est.arg.list = NULL,x.col = "blue",y.or.fitted.col = "black",x.lwd = 3 * par("cex"),y.or.fitted.lwd = 3 * par("cex"),x.lty = 1,y.or.fitted.lty = 2,digits = .Options$digits,type = ifelse(discrete,"s","l"),main = NULL,xlab = NULL,ylab = NULL,xlim = NULL,ylim = NULL)
Error in ifelse(discrete,"plot.pos") :
object 'discrete' not found
当我使用较短的代码时:
cdfCompare(Ratio1,Ratio2 discrete = FALSE)
没有错误。我也试过设置
离散=真
,它看起来不影响绘图的形状(不平滑,我有 ~170,000 个值)。非常感谢。
解决方法
您可以定义一个单独的变量来传递离散值并使用 if
/else
选择 prob.method
。
discrete_value <- FALSE
cdfCompare(Ratio1,Ratio2 discrete = discrete_value,prob.method = if(discrete_value) "emp.probs" else "plot.pos",plot.pos.con = NULL,distribution = "norm",param.list = NULL,estimate.params = is.null(param.list),est.arg.list = NULL,x.col = "blue",y.or.fitted.col = "black",x.lwd = 3 * par("cex"),y.or.fitted.lwd = 3 * par("cex"),x.lty = 1,y.or.fitted.lty = 2,digits = .Options$digits,type = ifelse(discrete,"s","l"),main = NULL,xlab = NULL,ylab = NULL,xlim = NULL,ylim = NULL)