【发布时间】:2018-08-19 17:02:28
【问题描述】:
在 R 中,我想绘制一个平滑图(带有阴影边距),其中包含 X 和 Y 轴上的“年龄”和“周长”变量,用于准备橙色数据
ggplot2 使用的平滑“方法”是什么?
我喜欢这样,但会出错:
x <- Orange[2]
y <- Orange[3]
lo <- loess(y~x)
plot(x,y)
lines(predict(lo), col='red', lwd=2)
错误,警告:model.frame.default(formula = y ~ x) 中的错误: 变量 'y' 调用的无效类型(列表):loess -> eval -> eval -> -> model.frame.default 执行停止
【问题讨论】:
-
由于我们没有您的 Orange 数据,我们无法运行您的代码。
-
您很可能会收到该错误,因为
x和y变量是单列数据帧,但您希望将它们作为向量传递给loess。所以尝试使用x <- Orange[[2]] ; y <- Orange[[3]](注意双方括号)。此外,loess有一个data参数,因此您可以在公式中使用变量(第 2 列和第 3 列)的名称,并添加data=Orange。所以对于你的例子,lo = loess(circumference ~ age, data=Orange) ; lines(lo$x[order(lo$x)], predict(lo)[order(lo$x)], col='red', lwd=2)