如何基于目标向量对R语言中的列表进行排序?
根据对应向量排序R语言列表
刚好碰到过类似的需求,用R的order()函数就能轻松解决这个问题,来看看具体怎么做:
首先定义你的列表和向量:
lst <- list(c(1,2), c(1,0), c(4,1), c(-7,11)) v <- c(-1, 3, 0, -5)
核心的排序代码一行就够:
sorted_lst <- lst[order(v)]
运行后查看结果,就是你想要的排序后的列表:
> sorted_lst [[1]] [1] -7 11 [[2]] [1] 1 2 [[3]] [1] 4 1 [[4]] [1] 1 0
为什么这样能行?
order(v)会计算出向量v从小到大排序时,每个元素对应的原始索引位置。对于你的v来说,order(v)返回的是c(4,1,3,2)——这正好对应v中元素-5(第4位)、-1(第1位)、0(第3位)、3(第2位)的顺序。- 用这个索引数组去提取列表
lst的元素,自然就得到了按v元素升序排列后的列表。
如果需要按降序排序,只需要给order()加个参数:
# 降序排序 sorted_lst_desc <- lst[order(v, decreasing = TRUE)]
内容的提问来源于stack exchange,提问作者Dipankar Mondal
相关产品推荐
相关产品推荐

