我有一个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函数处理吗?
答案 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
。