【问题标题】:Rearrange hierarchy in a list of lists in R在 R 中的列表列表中重新排列层次结构
【发布时间】:2015-01-09 12:29:04
【问题描述】:

我想知道在R 中是否存在一种简单的方法来执行以下操作:

假设我有一组关于四辆车的数据:白色 BMW、黑色 BMW、白色 GMC 和黑色 GMC。
我把它们放在一个名为cars的列表中:

白色宝马的数据在cars[[1]][[1]]
黑色宝马的数据在cars[[1]][[2]],
白色 GMC 上的数据位于 cars[[2]][[1]]
黑色 GMC 的数据在cars[[2]][[2]]

在这种情况下,第一个坐标表示汽车的品牌,而第二个坐标表示它的颜色。

我现在希望交换坐标,这样第一个坐标会指示颜色,而第二个坐标会指示汽车的品牌:

白色宝马的数据在cars[[1]][[1]]
黑色宝马的数据在cars[[2]][[1]],
白色 GMC 上的数据位于 cars[[1]][[2]]
黑色 GMC 上的数据位于cars[[2]][[2]]

因此我想更改列表列表中的层次结构

任何帮助表示赞赏!

【问题讨论】:

    标签: r list hierarchy


    【解决方案1】:

    相同样本数据的另一种解决方案

    cars <- list(list("white BMW", "black BMW"), list("white GMC", "black GMC"))

    do.call(function(...) Map(list, ...), cars)
    

    保持元素名称不变。

    【讨论】:

      【解决方案2】:

      我不认为这是一个非常常见的列表任务。如果您以扁平方式存储数据并根据需要对其进行子集化,听起来会好得多。不过,这是您可以交换的一种方式。使用样本输入

      cars <- list(list("white BMW", "black BMW"), list("white GMC", "black GMC"))
      

      你可以的

      i <- 1:length(cars)
      j <- 1:length(cars[[1]])
      swap<-lapply(j, function(j) lapply(i, function(i) cars[[i]][[j]]))
      

      比较

      cars[[2]][[1]]
      # [1] "white GMC"
      swap[[2]][[1]]
      # [1] "black BMW"
      

      【讨论】:

        猜你喜欢
        • 2016-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多