Как получить вывод моего результата в json в R

Привет, я использую R с opencpu. Прямо сейчас я использовал библиотеку jsonlite, чтобы получить результаты в формате json, но, к сожалению, это не удается. У меня получилось вот так.

["A101 Prateek Wisteria Sector 77 Noida New Delhi","7780274.18056666","1"]

я хочу, чтобы вывод вывод, как это

{ "flag": "0", "property_details", "<<address>>", "estimate", "<<estimated value from R>>" }

вот моя программа

library(jsonlite)
delhi <- read.delim("delhi.tsv", na.strings = "") 
delhi$lnprice <- log(delhi$price)
if(address1 %in% delhi$property_address_1)
{

    data <- read.delim("UItest.txt", na.strings = "")
    heddel <- lm(lnprice ~ bedrooms+ area+ bathrooms, data = delhi)
    result <- predict(heddel,data)
    final_prediction = exp(result)
    property_details = address1
    property_details
    flag=1 
    estimated_value <- final_prediction
    result <- c(property_details,estimated_value,flag)
    col_headings <- c('property_details','estimated_value','flag')
    names(result) <- col_headings
    toJSON(result,Pretty=TRUE)
    }

любая помощь будет оценена.


person arun abimaniyu    schedule 23.09.2015    source источник


Ответы (2)


Чтобы получить результат, похожий на желаемый, попробуйте определить переменную results как data.frame, а не как vector.

Используя некоторые фиктивные данные о ключевых строках вашего кода:

> library(jsonlite)
> result <- c("xyz",123.45,1)
> col_headings <- c('property_details','estimated_value','flag')
> names(result) <- col_headings
> toJSON(result, pretty=TRUE)
["xyz", "123.45", "1"] 

Теперь немного рефакторинг этого кода, чтобы использовать data.frame вместо именованного vector:

> result <- data.frame('property_details'="xyz",'estimated_value'=123.45,'flag'=1)
> toJSON(result,pretty=TRUE)
[
  {
    "property_details": "xyz",
    "estimated_value": 123.45,
    "flag": 1
  }
] 

Это также имеет побочный эффект, заключающийся в том, что значения integer и numeric не преобразуются в строки character.

person aashanand    schedule 23.09.2015
comment
Привет, спасибо за ваш ответ, я передаю вывод во время выполнения, используя opencpu. Как изменить код. Можете ли вы помочь в этом - person arun abimaniyu; 23.09.2015
comment
Я получаю вывод в json, но в своем выводе я много раз получал \n \n. Есть какое-либо решение для удаления \n в выводе json. - person arun abimaniyu; 23.09.2015
comment
Попробуйте удалить pretty=TRUE? - person aashanand; 23.09.2015

Вам нужно «транспонировать» результаты. Рассмотреть возможность:

library(jsonlite)
col_headings <- c('property_details','estimated_value','flag')
result <- c("PropDetails", 1.1, TRUE)
results=data.frame(t(result))
names(results)=col_headings

Затем:

toJSON(results)

производит:

[{"property_details":"PropDetails","estimated_value":"1.1","flag":"TRUE"}] 
person peak    schedule 23.09.2015