使用R中的if-condition对向量执行转换

时间:2013-12-19 12:04:51

标签: r if-statement transformation regression

我在PHP脚本中运行R中的回归模型。事实上,我正在进行回归......

fit <- lm(VIEWS ~ TREND + STUNDE + WOCHENTAG + MONAT * JAHR)

...然后对结果应用box-cox-transformation,在我的情况下获取一个有意义的范围内的“最佳”lambda。

bc <- boxcox(fit, lambda = seq(0, 0.5, 0.005))
lambda <- bc$x[which.max(bc$y)]

如果lamda不为0,我应用实际的转换,一切正常:

VIEWS_BOX <- VIEWS^lambda - 1

我通过用VIEWS_BOX取代VIEWS来重复回归。

我的问题: 我需要为lambda = 0的情况写一个if条件,我读了很多并尝试了很多东西,但它只是不起作用。例如。我试过了:

VIEWS_BOX <- ifelse(rep(lambda = 0, length(VIEWS)), ln(VIEWS), VIEWS^lambda - 1)

任何人都可以帮助我吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

在您的代码中,您使用了lambda = 0,但=表示已分配。它应该是lambda == 0,因为==表示比较。

ifelse没有必要。您可以使用:

VIEWS_BOX <- if (lambda) VIEWS^lambda - 1 else log(VIEWS)