从具有最小值的向量中提取对象

时间:2014-02-03 20:31:59

标签: r

我有以下载体

a <- 0.01
b <- 0.1
c <- 0.0001

x <- c(a,b,c) 

Which.min provides the location
min provides the minumum value

想要提取对应于最小值的对象名称(a,b或c)。

4 个答案:

答案 0 :(得分:3)

x <- c(a=0.01, b=0.1, c=0.0001)
names(x)[which.min(x)]

答案 1 :(得分:1)

使用cbind代替c。不适用于大样本...

x <- cbind(a, b, c)
colnames(x)[which.min(x)]
# [1] "c"

这非常低效,但它确实可以帮助您定义名称。此外,如果您的向量具有多个值,则无效。

答案 2 :(得分:1)

好吧,我认为Barnaby希望为环境中的对象执行此操作:

a <- 0.01
b <- 0.1
c <- 0.0001

names(which.min(sapply(ls(), get, envir=globalenv())))
# [1] "c"

请注意,这会占用环境中的每个对象,因此如果您不想要清除环境,或使用pattern参数ls

但实际上,如果你采用这种技巧,你可能会错误地进行分析。通常应将对象保持在一起(例如在列表中)。

答案 3 :(得分:0)

您可以使用变量名创建矢量:

x <- c("a", "b", "c") 

names(which.min(mget(x)))
# [1] "c"