我想创建一个散点图并绘制数据集子集的回归线。举一个可重现的示例,我将使用CO2数据集。

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

with(subset(CO2,Type=="Quebec"),plot(conc,uptake),abline(lm(uptake~conc)))


发出这样的命令的正确方法是什么?我可以单线吗?

最佳答案

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

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

with(subset(CO2,Type=="Quebec"), {plot(conc,uptake); abline(lm(uptake~conc))})


或将表达式分散在两行中,仍然包裹在;{中:

with(subset(CO2,Type=="Quebec"),
     {plot(conc,uptake)
      abline(lm(uptake~conc))})




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

plot(uptake ~ conc, data = CO2, subset = Type == "Quebec")
abline(lm(uptake ~ conc, data = CO2, subset = Type == "Quebec"), col = "red")


}只是使您用花括号和with()混淆代码。

10-08 16:35