我试图基于与字符串向量的部分匹配对列表中的元素重新排序。因此,如果我有以下列表:
myList = list(BvsAadditionalinfo, AvsAothertext,
BvsBothertext, AvsBothertext, AvsBadditionalinfo,
BvsAothertext, BvsBadditionalinfo, AvsAadditionalinfo)
还有这样的向量:
vsList = c("AvsA", "AvsB", "BvsA", "BvsB")
我可以对列表进行排序,以便最终得到:
myList = list(AvsAothertext, AvsAadditionalinfo,
AvsBothertext, AvsBadditionalinfo, BvsAothertext,
BvsAadditionalinfo, BvsBothertext, BvsBadditionalinfo)
我已经尝试过使用order
的用法:
TempFileList <- [order(match(myList, vsList))]
但这似乎不起作用,大概是因为匹配不是100%。如何告诉它接受部分匹配?
我的vsList也没有任何附件,因此我可以轻松地使用如下内容:
abbreviations = c("A", "B")
如果可行。
答案 0 :(得分:2)
myList = list(BvsAadditionalinfo = 0, AvsAothertext = 0,
BvsBothertext = 0, AvsBothertext = 0,
AvsBadditionalinfo = 0, BvsAothertext = 0,
BvsBadditionalinfo = 0, AvsAadditionalinfo = 0)
myList[order(-rowSums(sapply(seq_along(vsList), function(i)
i * grepl(vsList[i], names(myList)))), names(myList), decreasing = TRUE)]
#$`AvsAothertext`
#[1] 0
#$AvsAadditionalinfo
#[1] 0
#$AvsBothertext
#[1] 0
#$AvsBadditionalinfo
#[1] 0
#$BvsAothertext
#[1] 0
#$BvsAadditionalinfo
#[1] 0
#$BvsBothertext
#[1] 0
#$BvsBadditionalinfo
#[1] 0