在R中的列表列表中重新排列层次结构
我想知道在在R中的列表列表中重新排列层次结构,r,list,hierarchy,R,List,Hierarchy,我想知道在R中是否有一种简单的方法来做以下事情: 假设我有一大堆关于四辆车的数据:白色宝马、黑色宝马、白色GMC和黑色GMC 我把它们放在一个名为cars的列表中: 关于白色宝马的数据在汽车[[1][[1]], 黑色宝马的数据在汽车[[1][[2]], 白色GMC的数据在汽车[[2][[1]], 黑色GMC的数据在汽车[[2][[2]]中 在这种情况下,第一个坐标表示汽车的品牌,而第二个坐标表示汽车的颜色 我现在希望交换坐标,以便第一个坐标指示颜色,而第二个坐标指示汽车品牌: 关于白色宝马的数据
R
中是否有一种简单的方法来做以下事情:
假设我有一大堆关于四辆车的数据:白色宝马、黑色宝马、白色GMC和黑色GMC我把它们放在一个名为
cars
的列表中:
关于白色宝马的数据在汽车[[1][[1]]
,黑色宝马的数据在
汽车[[1][[2]]
,白色GMC的数据在
汽车[[2][[1]]
,黑色GMC的数据在
汽车[[2][[2]]
中在这种情况下,第一个坐标表示汽车的品牌,而第二个坐标表示汽车的颜色 我现在希望交换坐标,以便第一个坐标指示颜色,而第二个坐标指示汽车品牌: 关于白色宝马的数据在
汽车[[1][[1]]
,黑色宝马的数据在
汽车[[2][[1]]
,白色GMC的数据在
汽车[[1][[2]]
,黑色GMC的数据在
汽车[[2][[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"
do.call(function(...) Map(list, ...), cars)