[英]stop when call is not from “aov()” or “lm()” in R?
我有一個R函數,編程為當輸入不是來自"aov()"
或"lm()"
的調用時停止 。
在下面,我希望將fit3
用作輸入時,我的功能會stop
,但我想知道為什么不這樣做?
PS供給時,函數正確停止fit4
,但進料時不停止fit3
; 為什么?
fit2 <- aov(mpg ~ wt, data = mtcars)
library(rstanarm)
fit3 <- stan_glm(mpg ~ wt, data = mtcars) # This call is from "rstanarm" package !!
fit4 <- glm(vs~mpg, data = mtcars)
bb <- function(fit = NA){
if(!(any(is.na(fit)))){
if(fit$call[1] != "lm()" && fit$call[1] != "aov()") stop("Error") else "OK"
}
}
# Examples of use:
bb(fit = fit4) # stops as expected ! because call is not from "lm()" or "aov()"
bb(fit = fit3) # I expect HERE to stop also; why it doesn't? !!!!
這是原因:
> !(any(is.na(fit3)))
[1]假
is.na(fits3)返回一個邏輯命名向量。 也許您嘗試檢查is.na(fit3 $ call),而不是fit3對象的所有元素?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.