3 votes

Recyclage lors de l'utilisation de `crossprod` dans R ?

Bien que ma fonction fonctionne bien, je me demande comment éviter l'avertissement ci-dessous lors de l'exécution de ma simple fonction ?

Message d'avertissement : Dans numer/denom : Le recyclage d'un tableau de longueur 1 dans l'arithmétique des tableaux de vecteurs est dépréciée. Utilisez c() ou as.vector() à la place.

qq <- function(f, df1, df2, N){
       denom <- crossprod(df1, f) + df2 + 1  # I suspect warning is from here?
       numer <-  (df1 * (f - 1))
       return(numer / denom)
}

# Example of use:
qq(f = c(84.11, 4.05, 8.38), df1 = c(3, 1, 3), df2 = 24, N = 32)

1voto

Suren Points 3481

L'avertissement se produit au return función.

Essayez

return(numer / as.numeric(denom))

La raison en est denom est une matrice, et number est un vecteur atomique. Je pensais également qu'il n'y aurait pas d'avertissement, mais il semble que l'opération que vous avez effectuée ait été dépréciée.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X