我想知道在R中是否有一种简单的方法来做下面的事情
假设我有一堆关于四辆汽车的数据:白色宝马,黑色宝马,白色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]]中。
因此,我希望更改列表列表中的层次结构。
任何帮助都很感激!
发布于 2014-11-12 15:44:27
我不认为这是一个超级常见的任务清单。听起来,如果您以一种扁平的方式存储数据,并且只在必要时对其进行子集,情况会好得多。尽管如此,这里有一种你可以交换的方法。用样本输入
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"发布于 2017-04-03 09:51:43
对同一样本数据的另一种解决方案
cars <- list(list("white BMW", "black BMW"), list("white GMC", "black GMC"))
是
do.call(function(...) Map(list, ...), cars)使元素的名字保持原样。
https://stackoverflow.com/questions/26890615
复制相似问题