如何将日期作为字符从JMP发送到R.所有,
我正在尝试利用R中存在的一些财务功能。这些函数要求将日期作为字符传递。任何人都可以指导我如何以JMP中可接受的格式传递日期。
@ih (特别提及):)
# 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)])})我想做同样的事情 - 除了输入需要从JMP传递到R。
现金流量(CF1)是一个直接向量,没有问题,但日期是棘手的部分。
R中的XNPV函数如果我不需要将日期格式化为上面显示的字符。
即使我将日期格式化为JMP中的字符,但是当我将它们传递给RI时,不要认为它们正在被正确传递。
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
- 这会引发错误 - “as.Date.default(DatesInJMP)” - 不知道如何转换为类“Date”
Re:如何将日期作为字符从JMP发送到R.来自R中的?as.Date:
该<FONT face="Courier New"> as.Date </FONT>方法接受字符串,因子,逻辑<FONT face="Courier New"> NA </FONT>和类的对象<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>和<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显示为字符串列表而不是字符串向量。 下面的代码验证了这一点,然后通过首先转换为字符向量来纠正问题。
请注意,您还可以将日期和时间作为数字发送,您只需要通过将值导入为UTC来说明JMP中缺少时区。 如有必要,您可以将其抵消当地时间;我用lubridate做那种事。或者您可以在将其发送到R之前在JMP中执行该偏移。
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();
编辑修复了在此窗口中尝试更改代码的搞砸格式。
Re:如何将日期作为字符从JMP发送到R. @txnelson ,
我分享的第二段代码是在JSL而不是R。
R Send(DatesInJMP)
d1 <- as.Date(DatesInJMP)
R Get(d1)
这是我尝试显示从JMP传递到R的日期。当我从JMP调用R时,R的一个实例没有被打开,所以我不知道如何测试R看到的东西,而不是像我上面那样将它检索到JMP中。每个参数都从JMP单独传递给R,如下所示:
# JSL CODE
R Send(DatesInJMP);
R Send(CashFlow);
R Submit("
d1 <- as.Date(DatesInJMP)
"
);
R Get(d1);
Re:如何将日期作为字符从JMP发送到R.你在R中显示了你通过的列表,这样你就可以看到R收到了什么?您可以将原始R代码修改为单独的列表,然后在您尝试在R代码的修改版本中为JMP传递它吗?
Re:如何将日期作为字符从JMP发送到R.嘿吉姆,
在传递给R之前,我确实将日期格式化为字符。它们被格式化为字符日期列表。
我用来格式化它们的公式是:
(字符(格式(:PeriodEnding,“y / m / d”)))Re:如何将日期作为字符从JMP发送到R.乌代,
JMP中的日期是数字。 R代码中需要的列表是字符串列表。 在将它们传递给R之前,您需要使用Format()函数在JMP中构建一个新列表,其中已将列表中的数值转换为字符串中的字符值。