Привет, я хочу иметь простую функцию для моего локального сервера разработки opencpu.
getLinearInterpolatedEstimateQuantil <- function(x, type, probs){
result = quantile(data, type, probs)
result #print for simpler debug
}
Пример ввода отладки будет примерно таким:
{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}
Но есть проблема: когда вы вводите вручную образцы данных, например:
debugInput = fromJSON(file("debugInput.json"))
код компилируется.
НО, когда я пытаюсь получить к нему доступ через http, например:
opencpu$browse("library/myLibrary")
curl http://localhost:3469/ocpu/library/predictR/R/getLinearInterpolatedEstimateQuantil/Json -d '{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}
'-H "Content-Type: application / json"
Я получаю только как вывод:
unused arguments (type = 1, probs = probs)
In call:
getLinearInterpolatedEstimateQuantil(type = 1L, x = x, probs = probs)
Итак, я ожидаю, что при синтаксическом разборе возникнут проблемы с массивами?
Надеюсь, ты скажешь мне, что не так с моим кодом.
Изменить: я узнал, что opencpu выполняет синтаксический анализ json за меня. Однако код по-прежнему не работает. (https://www.opencpu.org/posts/scoring-engine/) Изменить: все еще не работает Изменить: Странно: вызов собственной функции работает:
curl http://localhost:5112/ocpu/library/stats/R/quantile/json -d '{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}' -H "Content-Type: application/json"
однако вызов моей собственной функции приводит к ошибке:
curl http://localhost:5112/ocpu/library/predictR/R/getLinearInterpolatedEstimateQuantil/json -d '{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}' -H "Content-Type: application/json"
unused arguments (type = 1, probs = probs)
In call:
getLinearInterpolatedEstimateQuantil(type = 1L, x = x, probs = probs)
для разъяснения здесь снова моя функция:
getLinearInterpolatedEstimateQuantil <- function(x){
result = quantile(data, type, probs)
return (result)
}
ИЗМЕНИТЬ снова:
library(jsonlite)
myFunction <- function(x, type, probs){
result = quantile(x, type, probs)
return (result)
}
json <- '{"type":1,"x":[1,2,3,4,5,6,7,8,9,10],"probs":[0.05,0.25,0.75,0.95]}'
args <- fromJSON(json)
do.call(myFunction, args)
Результаты в
100%
10
Warning message:
In if (na.rm) x <- x[!is.na(x)] else if (anyNA(x)) stop("missing values and NaN's not allowed if 'na.rm' is FALSE") :
Bedingung hat Länge > 1 und nur das erste Element wird benutzt
И
do.call(stats::quantile, args)
Результаты в
5% 25% 75% 95%
1 3 8 10
Почему первый вызов приводит к предупреждению с другим выводом? Почему работает второй звонок?
type
иprobs
; что соответствует сообщению об ошибке. Не следует ли декларировать эти параметры? Кроме того, ваша функция в настоящее время игнорируетx
, но используетdata
, которого мы раньше не видели. - person Silly Freak   schedule 03.06.2015