You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言实现name_sort函数:按数值降序返回对应名称

实现按values降序排序对应names的R函数

我想写一个名为name_sort的函数,接收names和values两个参数,要求按照values的降序返回对应的names。比如当values是c(3,2,1)时,要返回c("A","B","C")。我刚接触R语言,不确定要不要用if语句,希望得到帮助。我期望的函数起始语句是:

names_sort <- function(values, names) {

预期输入输出示例:
调用names_sort(c(3,1,2), c("A","B","C"))应该返回:

[1] "A" "C" "B"

完全不需要用if语句,R里的order()函数就能轻松搞定排序需求。直接通过获取values降序的索引,再用这个索引去提取对应的names即可。

完整的函数代码如下:

names_sort <- function(values, names) {
  # 生成values降序排列的索引
  sorted_indices <- order(values, decreasing = TRUE)
  # 根据索引提取对应的names
  names[sorted_indices]
}

代码解释

  • order(values, decreasing = TRUE):这个函数会返回一组索引值,按照values从大到小的顺序排列,比如输入c(3,1,2)时,返回的索引是1,3,2。
  • names[sorted_indices]:用得到的索引去取names向量里的元素,就能得到按values降序排列的names了。

测试示例输入:

names_sort(c(3,1,2), c("A","B","C"))

输出结果:

[1] "A" "C" "B"

完全符合预期。

内容的提问来源于stack exchange,提问作者Kash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:10:41