通过非常规有序向量重新排序R列表?

时间:2016-12-08 13:36:45

标签: r list

我们说我在R中有一个列表:

MyList <- list(A = rnorm(5), B = seq(10), C = letters)

现在让我们说我也有一个与MyList的名字相匹配的矢量,但它们的顺序不同:

pattern <- c("B", "A", "C")

如何对MyList进行排序以匹配pattern中的顺序?结果应如下所示,但仍保留原始名称。

NewList <- list(MyList[["B"]], MyList[["A"]], MyList[["C"]])

如果pattern具有自然顺序(例如,升序或降序),这似乎很简单。但是,如果它没有,那么我不能使用sortorder

我理想的解决方案只使用基础R。

1 个答案:

答案 0 :(得分:0)

查看?"["可能会有所帮助。具体来说,[[[之间的差异让我困惑了一段时间。在这里,需要注意的关键是您可以使用[为多个元素进行子集,而[[只能用于一个元素。

正如@lmo指出的那样,你想要做的是MyList[pattern]。如果您没有意识到,这可以起作用,因为names(MyList)pattern中的元素匹配 - 您不仅可以通过数字索引索引/子集(例如,1:3 ),但也通过名称(例如,c("A","B","C"))。

TLDR:

NewList <- MyList[pattern]