【问题标题】:R: Sorting vectors by mean in decreasing order while printing the vector namesR:在打印向量名称时按降序对向量进行平均排序
【发布时间】:2018-12-25 09:10:30
【问题描述】:

这是一个非常基本的问题。对于一项任务,我需要比较两台灌装机的体积。本质上,我想知道两台机器中哪一台填充的体积更大,所以我根据每台机器的 10 次观察来比较两种平均值。

machine1 <- c(151.2,150.5,149.2,147.5,152.9,152.0,151.3,149.7,149.4,150.7)
machine2 <- c(151.9,151.4,150.3,151.2,151.0,150.2,151.2,151.4,150.4,151.7)
means <- c(mean(machine1), mean(machine2))
sort(means, decreasing=T) [1]

如您所料,这个输出是最大向量均值,恰好是machine2 的均值:

[1] 151.07

我希望输出是向量的名称(即machine2)。如果我有大量向量,我想简单地知道具有最大均值的向量的名称,而不必单独打印每个向量均值并自己进行比较。我试过使用names() 命令,但不知道如何在这里集成。

【问题讨论】:

    标签: r sorting vector mean names


    【解决方案1】:

    我们可以获取list中的对象,然后使用which.max

    names(which.max(sapply(mget(ls(pattern = 'machine\\d+')), mean)))
    #[1] "machine2"
    

    ls以字符串形式返回全局环境中的所有对象,指定pattern即'machine'后跟一个或多个数字(\\d+),mget获取对象的值一个list,循环遍历listsapply,得到mean 作为vector,它也有名称作为对象名称。 which.max 获取最大均值的索引,用names 包裹返回索引的名称

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 2019-11-04
      • 2020-08-19
      • 1970-01-01
      • 2018-10-08
      • 2022-11-28
      • 2022-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多