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 索引的名称
换行
这是一个非常基本的问题。对于一项作业,我需要比较两台灌装机的体积。本质上,我想知道两台机器中哪一台的填充量更大,所以我比较了基于每台机器 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 索引的名称