在R中,在列表中选择子列表,并实际保留子列表';s名称,而不是顶级父级名称

在R中,在列表中选择子列表,并实际保留子列表';s名称,而不是顶级父级名称,r,R,几个小时以来,我一直在努力解决以下问题 所以我有一个清单,比如: Wyoming <- c("City1", "City2", "City3", ...) Ontario <- c("City1", "City2", "City3", ...) Florida <- c("City1", "City2", "City3", ...) ... # for all federated states Mexico <- list(Sonora, Yucatan, Chiapa

几个小时以来,我一直在努力解决以下问题

所以我有一个清单,比如:

Wyoming <- c("City1", "City2", "City3", ...)
Ontario <- c("City1", "City2", "City3", ...)
Florida <- c("City1", "City2", "City3", ...)
... # for all federated states

Mexico <- list(Sonora, Yucatan, Chiapas, Sinaloa)
Canada <- list(Alberta, Quebec, Ontario, Manitoba)
USA <- list(Wyoming, Colorado, NewHampshire, Florida)


ListOriginal <- list(USA, Canada, Mexico)
到目前为止,我一直在尝试的一切,例如,当我使用以下

NorthAmericaFedStates <- sapply(ListOriginal, "[[", 1) 
我可以选择我想要的,并在控制台中显示它,并将结果保存在变量中,但是当我打印变量时,它将出现与上面相同的问题

ExactDataIWant <- function(x) {
  Data <- x[1]
  print(blabla)
}

ExactData <- lapply(OriginalList, ExactDataIWant)

ExactDataIWant听起来你可能只是想
取消列表

unlist(unname(ListOriginal), recursive = FALSE)
我添加了
unname
部分以去除国家名称,否则它们会通过将国家名称附加到地区名称来保留。

谢谢大家

是。。。非常简单。。。我想我还没有充分意识到rlist软件包

这似乎真的起了作用:

library(rlist)

list.ungroup(ListOriginal, level = 1L, group.names = FALSE, sort.names = FALSE)

最棒的是,一个列表项是否包含一个、两个、三个或四个子项似乎并不重要。列表中的所有第二级项目都将处于同一级别,不区分其中的一些项目是否共享父项。我想你可以把group.names改为TRUE,如果你想知道的话

在寻求帮助时,您应该包括一个简单的示例输入和所需的输出,可用于测试和验证可能的解决方案。使用不完整的示例(“etc”,“etc”,“…”)会使测试变得非常困难。在示例构造中使用省略号是对不可复制示例的一种规定。这意味着我们期望能够读懂你的心思,并愿意完成你认为显而易见但不值得你花时间完成的任务。好吧,对不起!仍然不习惯所有这些,或者可能是
do.call(c,ListOriginal)
unlist(unname(ListOriginal), recursive = FALSE)
library(rlist)

list.ungroup(ListOriginal, level = 1L, group.names = FALSE, sort.names = FALSE)