您好我正在使用R和opencpu.right现在我使用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)
}
任何帮助将不胜感激。
答案 0 :(得分:0)
要获得类似于所需结果的输出,请尝试将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
字符串。
答案 1 :(得分:0)
你需要&#34;转置&#34;结果。考虑:
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"}]