В R functon я использовал fileName
как параметр для чтения и обработки данных csv, присутствующих в этом файле. Я использовал пакет rook
для интеграции R с javascript. В javascript я использовал следующий код, чтобы получить имя файла импортируемого файла.Передача имени файла R из javascript с использованием пакета 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) {
}
});
}
Из-за этого метода проходит только имя файла, а не полный путь к файлу, я не получит выход в R. Итак, что модификация мне нужно сделать, чтобы получить точный результат. Я использую следующий код: 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")
-----
-----
}