在"with"内部"情节"之后"abline"不起作用

Bra*_*ani 2 plot r

我想创建一个散点图并绘制数据集子集的回归线.为了给出一个可重复的例子,我将使用CO2数据集.

我尝试了这个,但回归线由于某种原因没有出现

with(subset(CO2,Type=="Quebec"),plot(conc,uptake),abline(lm(uptake~conc)))
Run Code Online (Sandbox Code Playgroud)

给这样一个命令的正确方法是什么?我可以用一个班轮做吗?

Rei*_*son 9

您需要将两行代码作为单个R表达式提供.这abline()被作为后来的论证with(),这是...争论.这是一种将参数传递给未来方法的方法,但最终结果是它对于这部分代码实际上是一个黑洞.

两个选项,i)保留一行,但将表达式包装在中{}用两个表达式分隔;:

with(subset(CO2,Type=="Quebec"), {plot(conc,uptake); abline(lm(uptake~conc))})
Run Code Online (Sandbox Code Playgroud)

或传播表达出了两行,还裹着{}:

with(subset(CO2,Type=="Quebec"), 
     {plot(conc,uptake)
      abline(lm(uptake~conc))})
Run Code Online (Sandbox Code Playgroud)

编辑:说实话,如果你正在做这样的事情,你会错过通过R的模型公式进行子集化的优势.我会这样做如下:

plot(uptake ~ conc, data = CO2, subset = Type == "Quebec")
abline(lm(uptake ~ conc, data = CO2, subset = Type == "Quebec"), col = "red")
Run Code Online (Sandbox Code Playgroud)

with()只是让你用大括号和你的代码混淆;.