簡體   English   中英

當調用不是來自R中的“ aov()”或“ lm()”時停止嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM