国会图书馆分类号在图书馆中用于为物品提供索书号,以便在书架上订购它们。它们可以很简单,也可以非常复杂,有一些强制性部分,但有许多可选部分。(有关050 国会图书馆索书号的分解方式,请参阅“在 050 中输入索书号” ,或者参阅 lc_callnumber了解对它们进行排序的 Ruby 工具。)
我想按 R 中的 LCC 编号进行排序。我看过对R 中的非平凡元素列表进行排序和对 R 中的自定义类的元素列表进行排序?但还没弄清楚。
以下是按排序顺序输入的四个索书号码:
call_numbers <- c("QA 7 H3 1992", "QA 76.73 R3 W53 2015", "QA 90 H33 2016", "QA 276.45 R3 A35 2010")
Run Code Online (Sandbox Code Playgroud)
sort按字符对它们进行排序,因此 276 < 7 < 76.73 < 90。
> sort(call_numbers)
[1] "QA 276.45 R3 A35 2010" "QA 7 H3 1992" "QA 76.73 R3 W53 2015" "QA 90 H33 2016"
Run Code Online (Sandbox Code Playgroud)
为了正确地对它们进行排序,我想我必须定义一个类,然后定义它的一些方法,如下所示:
library(stringr)
class(call_numbers) <- "LCC" …Run Code Online (Sandbox Code Playgroud) 我有这个清单:
thresholds <- list(
list(color="red", value=100),
list(color="blue", value=50),
list(color="orange", value=100),
list(color="green", value=1),
list(color="orange", value=50)
)
Run Code Online (Sandbox Code Playgroud)
我想按每个元素的“值”字段对其进行排序,并丢弃重复项,以使结果列表中没有两个元素具有相同的“值”字段(当出现平局时被选择的元素无关紧要)。
sort并且unique不能使用复杂的列表,也不允许自定义排序。如何达到预期的效果?