【问题标题】:How to get the ouput of my result in json in R如何在R中的json中获取我的结果输出
【发布时间】:2015-09-23 04:33:49
【问题描述】:

嗨,我正在使用带有 opencpu 的 R。现在我使用 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)
    }

任何帮助将不胜感激。

【问题讨论】:

    标签: json r opencpu jsonlite


    【解决方案1】:

    要获得类似于您想要的结果的输出,请尝试将您的 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
      }
    ] 
    

    这还有一个副作用,即不会将 integernumeric 值强制转换为 character 字符串。

    【讨论】:

    • 您好,感谢您的回复,我正在使用 opencpu 在运行时传递输出。如何修改代码。您能帮忙吗
    • 我在 json 中得到输出,但在我的输出中我得到了很多次 \n \n。有任何解决方案可以删除 json 输出中的 \n
    • 尝试删除pretty=TRUE?
    【解决方案2】:

    您需要“转置”结果。考虑:

    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"}] 
    

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 2021-02-17
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多