如何在R中的列表子列表中映射值

时间:2019-04-25 09:03:04

标签: r list function sublist

我对R相当陌生。我正在尝试将函数应用于所获得的子列表中的值,但我不知道在哪里查找。

我像这样读取R中的一些json文件:

library("rjson")
fileNames <- list.files(path = "/<PATH>/TimedSentences", full.names = TRUE)
parseJson <- function(fileName){
  fromJSON(file = fileName)
}

jsons <- lapply(fileNames, parseJson)

jsonToSentJson <- function(jsonList){
  #change sentences to sentiments
}

json文件看起来像这样

{
  "name": "<STORYNAME>",
  "sentences": [
    {
      "beginTime": 880,
      "endTime": 16960,
      "sentence": "Okay, guys, here we go."
    },
    {
      "beginTime": 14160,
      "endTime": 16960,
      "sentence": "Here we go."
    },...]
}

现在,我想返回几乎相同的列表,除了我想针对每个句子值运行一个函数并将其更改为情感值。我安装了一个具有名为“ get_sentiment”的功能的软件包,并且基本上编写了一个看起来像这样的json文件:

{
  "name": "<MOVIENAME>",
  "sentences": [
    {
      "beginTime": 880,
      "endTime": 16960,
      "sentiment": 1.5
    },
    {
      "beginTime": 14160,
      "endTime": 16960,
      "sentiment": 0.0
    },...]
}

尝试执行此操作时应该寻找什么?

NB:我可以弄清楚如何编写我认为的jsn文件,但是在弄清楚如何更改子列表中的值时遇到了麻烦

1 个答案:

答案 0 :(得分:0)

我知道了

我是用

做到的
jsonSentencesToJsonSentiment <- function(json){
    list("name" = json[["name"]], 
     "sentiments" =lapply(json[["sentences"]], timedSentenceToTimedSentiment)
     )
}

timedSentenceToTimedSentiment <- function(timedSentence){
  list("beginTime" = timedSentence[["beginTime"]], 
    "endTime" = timedSentence[["endTime"]],
    "sentiment" = get_sentiment(c(timedSentence[["sentence"]]), method = "nrc"))
}

sentJson <- lapply(jsons, jsonSentencesToJsonSentiment)