小编skw*_*won的帖子

使用 R 的 lm(),公式对象应该作为字符传递吗?

我使用 lm() 发现了 R 的奇怪行为。

基于cars对象,以下函数是在速度 30 下使用局部线性回归绘制拟合的断裂距离。

func1 <- function(fm, spd){
  w <- dnorm(cars$speed - spd, sd=5)
  fit <- lm(formula = as.formula(fm), weights = w, data=cars)
  plot(fitted(fit))
}

func2 <- function(fm, spd){
  w <- dnorm(cars$speed - spd, sd=5)
  fit <- lm(formula = fm, weights = w, data=cars)
  plot(fitted(fit))
}

func1("dist ~ speed", 30)
func2(dist ~ speed, 30)
Run Code Online (Sandbox Code Playgroud)

func1作品。但func2失败并显示以下消息:

Error in eval(expr, envir, enclos) : object 'w' not found
Run Code Online (Sandbox Code Playgroud)

两个函数之间的唯一区别是func2接收公式类作为参数。

以这种风格使用 R 的 …

r lm

5
推荐指数
1
解决办法
882
查看次数

标签 统计

lm ×1

r ×1