如何从函数返回对象,而不是调用对象时提供的输出?
best.mod <- function(d){
m1 <- lm(Sepal.Length~Sepal.Width, d)
m2 <- lm(Sepal.Length~Sepal.Width + I(Sepal.Width^2), d)
ifelse(AIC(m1) < AIC(m2), m1, m2)
}
mod <- best.mod(iris[iris$Species == "setosa",])
class(mod)
最佳答案
问题来自使用ifelse
。这是用于矢量化比较。标准的if ... else
在这里更好:
best.mod <- function(d){
m1 <- lm(Sepal.Length~Sepal.Width, d)
m2 <- lm(Sepal.Length~Sepal.Width + I(Sepal.Width^2), d)
if(AIC(m1) < AIC(m2)) return(m1) else return(m2)
}
mod <- best.mod(iris[iris$Species == "setosa",])
class(mod)
[1] "lm"
注意
?ifelse
中的警告:结果的模式可能取决于测试的值(请参见
示例),结果的class属性(请参见oldClass)为
取自测试,可能不适用于从中选择的值
是的,没有。
关于r - 从函数返回对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20824102/