Comment envoyer des dates en caractères de JMP à RTout,
J'essaie de tirer parti de certaines fonctions financières qui existent dans R. Les fonctions exigent que les dates soient passées en tant que caractère. Quelqu'un peut-il me guider sur la manière de passer les dates dans un format acceptable pour R de JMP.
@ih ( Mention spéciale)
# Working R Code
library(tvm)
CF1 <- c(-100,20,40,25,8,15)
d1 <- as.Date(c("2016-01-01","2016-04-01","2016-10-01","2017-02-01","2017-03-01","2017-06-01"))
Res <- vector()
Res <- sapply(1:length(d1), function(i) {xnpv(i,CF1[i:length(CF1)],d1[i:length(d1)])})Je voudrais faire exactement la même chose - sauf que les entrées devront être passées de JMP à R.
Le cash-flow (CF1) est un vecteur direct et n’a aucun problème à passer, mais les dates sont la partie la plus délicate.
La fonction XNPV dans R si je ne le suis pas nécessite que les dates soient formatées comme le caractère indiqué ci-dessus.
Même si, je formate les dates en caractères dans JMP, mais lorsque je les transmets au RI, je ne pense pas qu'elles ont été correctement passées.
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
- Cela génère une erreur - "as.Date.default (DatesInJMP)" - ne sait pas comment convertir en classe "Date"
Re: Comment envoyer des dates en tant que caractères de JMP à RDe? As.Date in R:
le <FONT face="Courier New"> comme. </FONT> les méthodes acceptent les chaînes de caractères, les facteurs, les logiques <FONT face="Courier New"> N / A </FONT> et objets de cours <FONT face="Courier New"> " </FONT><A href="http://127.0.0.1:46214/help/library/base/help/POSIXlt" target="_blank" rel="nofollow noopener noreferrer"><FONT face="Courier New"> POSIXlt </FONT></A><FONT face="Courier New"> " </FONT> et <FONT face="Courier New"> " </FONT><A href="http://127.0.0.1:46214/help/library/base/help/POSIXct" target="_blank" rel="nofollow noopener noreferrer"><FONT face="Courier New"> POSIXct </FONT></A><FONT face="Courier New"> " </FONT>
DatesInJMP apparaît sous la forme d'une liste de chaînes au lieu d'un vecteur de chaîne. Le code ci-dessous le vérifie, puis corrige le problème en convertissant d'abord un vecteur de caractères.
Notez que vous pouvez également envoyer les dates et les heures sous forme de chiffres. Il vous suffit de prendre en compte l'absence de fuseau horaire dans JMP en important la valeur au format UTC. Vous pouvez ensuite le décaler en heure locale si nécessaire; Je fais ce genre de chose avec lubrifiant. Ou vous pouvez faire ce décalage dans JMP avant de l'envoyer à R.
Names default to here( 1 );
DatesInJMP = { "2017-01-01", "2017-01-02", "2017-01-03" };
R Init();
R Send( DatesInJMP );
R Submit( "str(DatesInJMP)");
R Submit( "dt <- as.Date(as.character(DatesInJMP))" );
Write("\!N"); //New line so log is easier to read
R Submit( "str(dt)");
Write("\!N");
//Send a number instead
JMPTime = num( Today() );
R Send( JMPTime );
R Submit( "Date_POSIX <- as.POSIXct( JMPTime, origin = '1904-01-01', tz = 'GMT')");
R Submit( "Date_ <- as.Date( Date_POSIX )");
R Submit( "str( Date_POSIX )");
R Submit( "str( Date_ )");
R Term();
Édité de corriger le formatage foutu d'essayer de changer le code dans cette fenêtre.
Re: Comment envoyer des dates en tant que caractères de JMP à R @txnelson ,
Le deuxième morceau de code que j'ai partagé, c'est-à-dire est en JSL et non pas R.
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
Ceci est ma tentative pour afficher les dates qui sont passées de JMP à R. Lorsque j'appelle R depuis JMP, une instance de R n'est pas ouverte. Par conséquent, je ne sais pas comment tester ce que R voit, à part le récupérer dans JMP comme j'essaie ci-dessus. Chaque argument est passé séparément de JMP à R comme indiqué ci-dessous:
# JSL CODE
R Send(DatesInJMP);
R Send(CashFlow);
R Submit("
d1 <- as.Date(DatesInJMP)
"
);
R Get(d1);
Re: Comment envoyer des dates en tant que caractères de JMP à RAvez-vous affiché dans R la liste que vous avez passée afin de voir ce que R a reçu? Pouvez-vous modifier votre code R original en une liste séparée, puis le transmettre comme vous tentez de le faire dans votre version modifiée du code R pour JMP?
Re: Comment envoyer des dates en tant que caractères de JMP à RHé Jim,
J'ai formaté les dates en caractères avant de passer à R. Elles sont formatées en tant que liste de dates de caractères.
La formule que j'ai utilisée pour les formater est la suivante:
(Caractère (Format (: PeriodEnding, "y / m / d")))Re: Comment envoyer des dates en tant que caractères de JMP à RUday,
Les dates dans JMP sont numériques. La liste dont vous avez besoin dans votre code R est une liste de chaînes. Vous devez utiliser la fonction Format () pour créer une nouvelle liste dans JMP dans laquelle vous avez traduit les valeurs numériques de la liste, en valeurs de caractère dans la chaîne, avant de les transmettre à R