0

我需要在 R 中编写与以下代码等效的代码,但我不太确定如何去做:

def add(args):
  result = args["a"] + args["b"]
  return result

原因是因为对于我正在使用的平台(Cloudera Data Science Workbench)模型需要 JSON 输入才能使用 API 密钥调用它们

因此,如果我在 R 中编写一个测试模型,例如:

f <- function(x, y) {
    return (x + y)
}

我无法使用该httr软件包进行像 {"x" : 2, "y" : 4} 这样的调用。

所以我要么需要制作一个字典,比如调用 R 中的函数

或者

我只是错误地调用 JSON,在这种情况下,有人可以帮我正确格式化 API 调用

谢谢

4

2 回答 2

1

JSON 是大多数 REST API 的默认数据格式。我们可以使用包将 R 列表序列化为 JSON jsonlite。基于 json 字符串创建 R 列表的另一种方法也是可能的:

library(jsonlite)

# named lists
l <- list(x = 2, y = 4)
l
#> $x
#> [1] 2
#> 
#> $y
#> [1] 4
c <- "{\"x\":3,\"y\":5}"
c
#> [1] "{\"x\":3,\"y\":5}"

toJSON(l, auto_unbox = TRUE)
#> {"x":2,"y":4}
fromJSON(c, simplifyVector = TRUE)
#> $x
#> [1] 3
#> 
#> $y
#> [1] 5

# vector without names
toJSON(c(1,2,3), auto_unbox = TRUE)
#> [1,2,3]
fromJSON("[4,5,6]", simplifyVector = TRUE)
#> [1] 4 5 6

reprex 包于 2021-10-07 创建(v2.0.1)

于 2021-10-07T14:28:41.413 回答
0

感谢@danlooo 的帮助。随着我自己的研究,我想出了一个满足我的问题的答案

由于其余 API 需要 CSDW 上的键值对格式,我可以从@danlooos 答案中执行以下操作:

f <- function(l) {
    return (l$a + l$b)
}

f(list(a = 2, b = 3) # Returns 5

这可以放入 JSON 格式,然后用于 API 调用:

{"a" : 2, "b" : 3}

于 2021-10-07T15:30:45.050 回答