W funcie R, użyłem fileName
jako parametru do odczytu i przetwarzania danych CSV obecnych w tym pliku. Użyłem pakietu rook
do integracji R z javascript. W javascript użyłem następującego kodu, aby uzyskać nazwę pliku importowanego pliku.przekazywanie nazwy pliku do R z javascript za pomocą pakietu Rook
<form id='importPfForm'>
<input type='file' name='datafile' size='20'>
<input type='button' value='IMPORT' onclick='importPortfolioFunction()'/>
</form>
function importPortfolioFunction(arg) {
var f = document.getElementById('importPfForm');
var fileName= f.datafile.value;
$.ajax({
type : "POST",
url : 'http://localhost:'+portNo+'/custom/Ralgotree/hBasedFileImport?fileName='+fileName,
dataType : "json",
data : '{ "method" : "hBasedFileImport", "clientId": "31d0c653-d7e5-44b6-98b5-8c084f99514a", "version": 0 }',
xhrFields: {
withCredentials: false
},
beforeSend : function(xhr) {},
success : function(data, textStatus, xmLHttpRequest){
},
error : function(xhr, ajaxOptions, thrownError) {
}
});
}
Dzięki tej metodzie przechodzi tylko nazwę pliku zamiast pełnej ścieżki pliku, i przyzwyczajenie się wyjście w R. Więc jakie modyfikacje trzeba zrobić, aby uzyskać dokładny wynik. ja zastosowaniem kodu R:
s <- Rhttpd$new()
s$add(
name="Ralgotree",
app=Rook::URLMap$new(
'/hBasedFileImport' = function(env){
req <- Rook::Request$new(env)
params <- Utils$parse_query(env$QUERY_STRING);
res <- Rook::Response$new(headers = list("Content-Type"="application/json" , "Access-Control-Allow-Origin"="*"))
res$write(toJSON(hBasedFileImport(toString(params["fileName"]))))
res$finish()
}
)
)
s$start(port = 9000)
hBasedFileImport <- function(fileName){
portData <- read.csv(fileName,sep="\t")
-----
-----
}