【发布时间】:2021-04-17 16:43:38
【问题描述】:
我有一个列表masterList,我想在其中添加另一个列表:contentList 和contentList2。内容列表是属于“01-response”的结果 - masterList 的第一个元素。
masterList <- list("01-response" = NULL, "02-response" = NULL,"03-response" = NULL,"04-response" = NULL,"05-response" = NULL)
contentList <- list(item1 = "text", item2 = "text2")
contentList2 <- list(item1 = "moretext", item2 = "moretext2")
我想将contentList 和contentList2 附加到masterList[["01-response"]]。但是,我希望将所有内容存储在 masterList 内的命名列表中:`masterList[["01-response"]][["contents"]],例如:
masterList
$`01-response`
$`01-response`$content
$`01-response`$content$item1
[1] "text"
$`01-response`$content$item2
[1] "text2"
$`01-response`$content$item1
[1] "moretext"
$`01-response`$content$item2
[1] "moretext2"
$`02-response`
NULL
$`03-response`
NULL
$`04-response`
NULL
$`05-response`
NULL
问题在于附加。在我追加之前,我需要检查 `masterList[["01-response"]][["contents"]] 是否存在。如果它存在,我只是追加。如果它不存在,我需要先创建它。
让我们将元素指定为变量,例如:listElement <- "01-response"。如果我要添加第三个列表contentList3 <- list(item1 = "moretext3", item2 = "moretext4"),我会简单地运行:
`listElement <- "01-response"`
if(exists("content", where = masterList[[listElement]])){
masterList[[listElement]][["content"]] <- append(masterList[[listElement]][["content"]],
contentList3)
}else{
masterList[[listElement]] <- append(masterList[[listElement]],
list(content = contentList3))
}
但是,如果 masterList 为空,则此代码会中断:
masterList
$`01-response`
NULL
$`02-response`
NULL
$`03-response`
NULL
$`04-response`
NULL
$`05-response`
NULL
exists("content", where = masterList[[listElement]])
Error in as.environment(where) : using 'as.environment(NULL)' is defunct
如何检查“内容”是否存在于masterList[[listElement]] 级别?
注意:这发生在函数内部,因此我想保持灵活性并避免使用masterList[["01-response"]]。我改用masterList[[listElement]],其中listElement <- "01-response"
【问题讨论】: