R:在打印向量名称时按降序对向量进行排序

R: Sorting vectors by mean in decreasing order while printing the vector names

这是一个非常基本的问题。对于一项作业,我需要比较两台灌装机的体积。本质上,我想知道两台机器中哪一台的填充量更大,所以我比较了基于每台机器 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() 命令,但不知道如何在此处集成它。

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

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

ls returns 全局环境中的所有对象作为字符串指定 pattern 即 'machine' 后跟一位或多位数字 (\d+), mget 获取 list 中对象的值,用 sapply 遍历 list,获取 mean 作为 [=21] =] 也有名称作为对象名称。 which.max 获取最大均值的索引并用 names returns 索引的名称

换行