如何在数据框子集中使用which.min?

时间:2014-05-21 15:23:19

标签: r

我有这个数据框

df <- structure(list(a = 1:20, b = c(4, 2, 5, 6, 2, 4, 7, 4, 9, 7, 6, 1, 1, 5, 2, 1, 9, 8, 6, 3), c = c(340, 200, 130, 730, 710, 340, 200, 130, 730, 710, 340, 200, 130, 730, 710, 340, 200, 130, 730, 710)), .Names = c("a", "b", "c"), row.names = c(NA, -20L), class = "data.frame")

我想要的输出是

的索引
which.min(df[1:V,3])

其中V是行号,例如

V <- 10

但是,我想要以下限制:

df[which(df$a<=df$b[V]),]

我想我已经尝试过任何组合来将这些组合在一起(例如with()),但我无法让它发挥作用。我该怎么办?

2 个答案:

答案 0 :(得分:1)

这是你在找什么?

which.min(with(df, df[a<=b[V],])[1:V,3])
#[1] 3

答案 1 :(得分:1)

使用data.table代替data.frame,可以用更易读的方式表示:

library(data.table)
dt = as.data.table(df)

dt[a <= b[V]][1:V, which.min(c)]
#[1] 3