首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改R中列表的层次结构

更改R中列表的层次结构
EN

Stack Overflow用户
提问于 2016-04-15 20:01:11
回答 1查看 278关注 0票数 1

我有这样的清单,

代码语言:javascript
运行
复制
myList <- lapply(unique(diamonds$cut), function(x){
    lst <- lapply(unique(diamonds$color), function(y){
        dta <- diamonds[diamonds$cut == x & diamonds$color == y, ]
        lm(price ~ carat, data = dta)
    })
    names(lst) <- unique(diamonds$color)
    return(lst)
})
names(myList) <- unique(diamonds$cut)

其结构是,

代码语言:javascript
运行
复制
> str(myList, max.level=2)
List of 5
 $ Ideal    :List of 7
  ..$ E:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ I:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ J:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ H:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ F:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ G:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ D:List of 12
  .. ..- attr(*, "class")= chr "lm"
 $ Premium  :List of 7
  ..$ E:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ I:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ J:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ H:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ F:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ G:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ D:List of 12
  .. ..- attr(*, "class")= chr "lm"
 $ Good     :List of 7
  ..$ E:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ I:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ J:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ H:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ F:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ G:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ D:List of 12
  .. ..- attr(*, "class")= chr "lm"
 $ Very Good:List of 7
  ..$ E:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ I:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ J:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ H:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ F:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ G:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ D:List of 12
  .. ..- attr(*, "class")= chr "lm"
 $ Fair     :List of 7
  ..$ E:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ I:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ J:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ H:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ F:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ G:List of 12
  .. ..- attr(*, "class")= chr "lm"
  ..$ D:List of 12
  .. ..- attr(*, "class")= chr "lm"

我想在拥有myList之后重新构造它,这样每个color都将排在cut之前。我不能更改创建myList的代码。我必须在生成myList之后执行此操作。请帮帮忙。

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 20:31:01

这可能并不理想,但只要列表结构是规则的,您就可以使用嵌套的for循环:

代码语言:javascript
运行
复制
# get names of inner and outer lists
innerNames <- names(myList[[1]])
outerNames <- names(myList)

# creat new blank list
myList2 <- list()

# restructure
for(i in innerNames) {
  for(j in outerNames)
    if(j == outerNames[1]) myList2[[i]] <- myList[[j]][i]
    else myList2[[i]] <- c(myList2[[i]], myList[[j]][i])
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36646594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档