Erreur 'La valeur ne peut pas être null'

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

Imed Salah
Messages : 15
Enregistré le : 16 Oct 2017, 13:00

Erreur 'La valeur ne peut pas être null'

Messagepar Imed Salah » 15 Jan 2018, 08:02

Bonjour à tous,
En fait, je suis entrain d'intégrer mes scripts R dans un programme c#. Tout mes scripts fonctionne convenablement sous R.
Pour votre connaissance, l'intégration des scripts R sous c# est très simple et elle ne modifie pas l'origine des codes R.
je vous présente l'exemple de l'importation d'un table :

Code : Tout sélectionner

using System;
using RDotNet;
namespace ConsoleApp11
{
    class Program
    {
        static void Main(string[] args)
        {         

            REngine engine = REngine.GetInstance();
DataFrame DataDia = engine.Evaluate("DataDia=read.table('C:/Users/isalah/Desktop/Fichiers_CRM/Fichier_csv/Diagnostic.csv',header=TRUE,sep =';',fill=TRUE)").AsDataFrame();
}
}
}



Comme vous voyez, il y a pas grande chose à ajouter..
Mais mon problème ce que j'ai eu quelques problèmes lors de l'exécution de mon programme c# de telle façon que j'ai douté à mes scripts!!
En fait, les erreurs affichées sont réellement des erreurs liées au contexte de la langage R!
Je travaille sur un projet de Machine Learning et pour le moments il y a des scripts de l’importation de données qui fonctionnent bien. Cependant ceux qui permettent d'identifier des nouveaux variables posent l'erreur
La valeur ne peut pas être null
.
par exemple : je désire d'identifier ce vecteur qui est le résultat de l'intersection des Ids de 4 tableaux:
je le définie comme ça:

Code : Tout sélectionner

var ID_communs=engine.Evaluate("ID_communs=intersect(intersect(DataIns$Id,'DataAch$FrontOfficeUser_Id),intersect(DataDia$UserId,DataCad$FrontOfficeUser_Id))").AsInteger();


On s’en fou de l’écriture ci-dessus, vous pouvez voir seulement:

Code : Tout sélectionner

ID_communs=intersect(intersect(DataIns$Id,'DataAch$FrontOfficeUser_Id),intersect(DataDia$UserId,DataCad$FrontOfficeUser_Id))


Comment expliquez vous ça sachant que les erreurs affichées ne dépends pas de C# !
je'ai recherché et je trouvé que tels erreurs sont reliées à R mais ça marche pas encore!

merci pour votre aide!

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Erreur 'La valeur ne peut pas être null'

Messagepar Logez Maxime » 15 Jan 2018, 08:05

Bonjour,

je ne connais rien au c mais est-ce que ton problème ne vient pas du fait que dans certains cas tu n'as aucune correspondance entre tes deux vecteurs ?

Code : Tout sélectionner

intersect(1, 2)
numeric(0)
Cordialement,
Maxime

Imed Salah
Messages : 15
Enregistré le : 16 Oct 2017, 13:00

Re: Erreur 'La valeur ne peut pas être null'

Messagepar Imed Salah » 15 Jan 2018, 08:15

Bonjour Logez Maxime ,

non pas de tout , en fait il y a des éléments communs entres les différents Id des tables.
et ça marche très bien sous R.

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

Re: Erreur 'La valeur ne peut pas être null'

Messagepar Mickael Canouil » 15 Jan 2018, 09:49

Bonjour,

C# (ou C++) est plus strict que R quant à la définition des variables et des valeurs que ces variables peuvent prendre.
Ainsi, ce n'est pas parce-que cela "semble" fonctionné sous R, que le résultat est le bon.
Je pense comme Maxime, que l'intersection est ici problématique.

Enfin, dans le code présenté, a priori l'intersection est réalisée sur deux vecteurs de numériques (ou entier), que vous forcez en C# à être des entiers.
êtes-vous sûr qu'il n'y a pas de conversion effectuée par R, comme par exemple les chaînes en caractères transformé par défaut en facteurs?

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


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité