首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按照r中的名字对列表进行排序?

如何按照r中的名字对列表进行排序?
EN

Stack Overflow用户
提问于 2020-02-25 14:30:17
回答 3查看 1.3K关注 0票数 1

假设数据是;

代码语言:javascript
复制
data<-structure(list(`4` = 9, `3` = 7, `1` = 5, `2` = 4, `5` = 2), .Names = c("4", 
"3", "1", "2", "5"))

看上去就像;

代码语言:javascript
复制
$`4`
[1] 9

$`3`
[1] 7

$`1`
[1] 5

$`2`
[1] 4

$`5`
[1] 2

但我想这样按最低到最高的顺序排序;

代码语言:javascript
复制
out<-structure(list(`1` = 5, `2` = 4, `3` = 7, `4` = 9, `5` = 2), .Names = c("1", 
"2", "3", "4", "5"))
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-02-25 14:33:13

这里有一条单线:

代码语言:javascript
复制
setNames(lapply(sort(names(data)), FUN = function(n) data[[n]]), sort(names(data)))

# $`1`
# [1] 5
# 
# $`2`
# [1] 4
# 
# $`3`
# [1] 7
# 
# $`4`
# [1] 9
# 
# $`5`
# [1] 2
票数 2
EN

Stack Overflow用户

发布于 2020-02-25 14:33:40

您可以按名称排序,然后按排序列表调用列表:

代码语言:javascript
复制
data <- structure(list(`4` = 9, `3` = 7, `322` = 6, `1` = 5, `2` = 4, `5` = 2, `10` = 7),
              .Names = c("4", "3", "322", "1", "2", "5", "10"))
data <- data[order(as.numeric(names(data)))]

data
#$`1`
#[1] 5
#
#$`2`
#[1] 4
#
#$`3`
#[1] 7
#
#$`4`
#[1] 9
#
#$`5`
#[1] 2
#
#$`10`
#[1] 7
#
#$`322`
#[1] 6
票数 2
EN

Stack Overflow用户

发布于 2020-02-25 14:33:54

下面是两条直线:创建希望作为向量的排序,并重新分配已排序的数据

代码语言:javascript
复制
sorting <- sort(as.numeric(names(data)))
data <- data[as.character(sorting)]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60396930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档