【发布时间】:2022-07-12 04:24:56
【问题描述】:
我想根据列表中每个项目的第一个字符对列表进行排序。该列表包含 chr 数据,尽管其中一些字符是数字。我一直在尝试使用substr() 和order 的组合,但无济于事。
例如:
mylist <- c('0_times','3-10_times','11_20_times','1-2_times','more_than_20_times')
mylist[order(substr(mylist,1,2))]
但是,这会导致 11-20_times 被放置在 3-10_times 之前:
[1] "0_times" "1-2_times" "11-20_times" "3-10_times" "more_than_20_times"
更新
提供有关用例的更多详细信息。
我的数据类似于以下:
mydf <- data.frame(X1=c("0_times","3-10_times", "11-20_times", "1-2_times","3-10_times",
"0_times","3-10_times", "11-20_times", "1-2_times","3-10_times" ),
X2=c('a','b','c','d','e','a','b','c','d','e'))
mydf2 <- data.frame(names = colnames(mydf))
mydf2$vals <- lapply(mydf, unique)
我想要排序的是mydf2$vals 中的值。虽然@AllanCameron 的解决方案在单个列表上完美运行,但我想将其应用于mydf2$vals 中包含的每个列表,但无法弄清楚如何。
我的经验不足在这里很明显,但我整天都在为此苦苦挣扎。
【问题讨论】:
标签: r