在json中使用apply对象数组

时间:2016-06-17 11:41:53

标签: json r apply lapply sapply

我有一个json,我正在R中读取并转换为列表对象。对于键" metrics",存在多个相同类型的对象的数组。 Json结构:

{"metrics":[{"metricName":"abc",
             "metricType":"def"
            },
            {"metricName":"ghi",
             "metricType":"jkl"
            }]
}

这就是我的列表对象的样子:

$metrics
$metrics[[1]]
$metrics[[1]]$metricName
[1] "abc"

$metrics[[1]]$metricType
[1] "def"


$metrics[[2]]
$metrics[[2]]$metricName
[1] "ghi"

$metrics[[2]]$metricType
[1] "jkl"

我想将一个函数(someFunc)应用于数组的每个对象。 $指标[[1]],$度量[[2]]。如何使用apply系列函数来完成这项工作?

somefunc(x){return(list(x$metricName,x$metricType)}

我试过像这样连接:

lapply(lapply(metrics,"["),someFunc)

这不会引发错误,但会将空列表作为输出。 someFunc需要处理x $ metricName,x $ metricType对象。但是使用" ["我猜不会渲染那种物体。可以使用apply函数处理吗?

1 个答案:

答案 0 :(得分:0)

你能说明你的函数someFunc正在做什么(及其参数)吗?

这对我有用

 someFunc=function(metricName,metricType){
     return(paste(metricName,metricType))
     }
metrics=list(list(metricName="abc",metricType="m"),
             list(metricName="gg",metricType="L"))

lapply(metrics,FUN=function(el){someFunc(el$metricName,el$metricType)})

(如果你想要一个矢量,最终会使用sapply