我使用R中的向量创建了一个列表列表(例如parentList
)。parentList
由100个列表childList1
,childList2
组成,依此类推。每个这样的childList
都包含一个元素列表(grandChildVariable1
,grandChildVariable2
等)。除parentList
之外,所有列表和变量均未命名。
我想基于每个parentList
的第二个元素(grandChildVariable2
)对childList
进行排序。我可以使用parentList[[2]][2]
来获取此变量的值。但是我不太确定如何对整个列表进行排序。
我目前正尝试将其排序如下:
sorted_list <- parentList[order(sapply(parentList,'[[',2))]
,但它仅拾取第二个列表元素childList2
并返回以下错误:unimplemented type 'list' in 'orderVector1'
。
答案 0 :(得分:1)
我认为这应该有效。首先提取值,然后使用它们对父级列表进行排序要容易一些。
childList1 <- list(grandChildVariable1 = 1,
grandChildVariable2 = 10)
childList2 <- list(grandChildVariable1 = 1,
grandChildVariable2 = 30)
childList3 <- list(grandChildVariable1 = 1,
grandChildVariable2 = 20)
parentList <- list(childList1, childList2,childList3)
x <- sapply(parentList, function(x) x[[2]])
orderedParentList <- parentList[order(x)]
str(orderedParentList)
答案 1 :(得分:0)
我能够找出unimplemented type 'list' in 'orderVector1'
问题的根本原因。原因是某些childList
元素为NULL。当我确认parentList
不包含NULL时,我能够正确完成排序。
使用sorted_list <- parentList[order(sapply(parentList,'[[',2))]
可以得到预期的正确输出,而Cleland给出的答案也可以解决问题。