Erreur cannot coerce type 'S4' to vector of type 'double'

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

pinson laura
Messages : 66
Enregistré le : 30 Juil 2015, 11:35

Erreur cannot coerce type 'S4' to vector of type 'double'

Messagepar pinson laura » 27 Avr 2021, 14:34

Bonjour,

J'ai une erreur et je ne comprends pas comment je peux la régler..

J'appelle une table depuis postgis sur R (avec plusieurs colonne : ID, geom, tx...). La connexion ne pose aucun pb.

je souhaite utiliser la colonne "tx" pour faire un calcul. je demande donc à R ne transformer cette colonne en "numeric"

Code : Tout sélectionner

dsn = paste0("PG:dbname='",dbname,"' host='",host,"' user='",user,"' password='",pass,"'")
macouche = readOGR(dsn,name_table)
macouche[,"tx"]<- as.numeric(macouche[,"tx"])


ensuite, une fois ma base connectée, je fais mon calcul

Code : Tout sélectionner

distM <- macouche[,"tx"]/100


et la, voici mon erreur ....

Code : Tout sélectionner

Error in as.numeric(reseauroutier[, "tmja"]) :
  cannot coerce type 'S4' to vector of type 'double'


je ne la comprends pas car j'ai bien transformé ma colonne tx en numérique.
avez-vous une idée?

merci par avance :)

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Erreur cannot coerce type 'S4' to vector of type 'double'

Messagepar Mickael Canouil » 27 Avr 2021, 15:42

Bonjour,

en dehors du fait que le code n'est pas reproductible, voici ce que je devine.
1. "macouche" est un objet de type est classe inconnue provenant d'une fonction readOGR provenant elle-même d'une extension R inconnue (au moins de moi et ce n'est pas dans R base).
2. [, "tx"], utilise l'opérateur "[", pour extraire un élément. Là encore, ça va d'un vecteur à un objet de globalement n'importe quelle nature.
3. macouche[,"tx"] n'est a priori pas un vecteur, (cf. l'erreur)
4. Comment savez-vous que vous avez bien "transformé votre colonne en numérique" ? typeof(macouche[,"tx"]) ?

Solution: fonction str() ou class() pour savoir ce sur quoi vous opérer avant de faire les opérations.

Ce n'est pas votre premier message sur le forum, et que ce soit ici ou ailleurs, c'est la même chose, le maître mot est de fournir un exemple reproductible pour aider les gens à vous aider. ;)

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité