簡體   English   中英

如何在R中排序列表?

[英]How to sort list in R?

我有與此類似的列表列表:

a <- list(
  list(day = 5, text = "foo"),
  list(text = "bar", day = 1),
  list(text = "baz", day = 3),
  list(day = 2, text = "quux")
)

字段數量不明,字段不正常。

如何根據日期對此列表進行排序? 我需要列表升序排序。 我搜索但我只發現了如何對矢量進行排序。 是否可以對列表進行排序?

為了進行排序,鑒於“名單列表” a ,你可以嘗試使用sapply()與提取運算[[從列表中檢索數據。 這些用於調用order()

a[order(sapply(a, `[[`, i = "day"))]
#[[1]]
#[[1]]$day
#[1] 1
#
#[[1]]$text
#[1] "bar"
#
#
#[[2]]
#[[2]]$day
#[1] 2
#
#[[2]]$text
#[1] "quux"
# ...

正如本評論中所建議的,這也可以通過在sapply()使用匿名函數來實現:

a[order(sapply(a, function(x) x$day))]

當OP在函數定義中使用時,這也有效:

sortBy <- function(a, field) a[order(sapply(a, "[[", i = field))]
sortBy(a, "day")

請注意,我們需要將提取運算符[[在反引號或引號中)括起來。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM