如何將日期作為字符從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中構建一個新列表,其中已將列表中的數值轉換為字符串中的字符值。