1

我试图找出每个子列表的哪个元素是该特定子列表的最小值。我正在尝试应用该功能的当前数据块是 41 个条目的记录。它们被另一个函数分组,该函数为每个子列表或子组生成索引。元素1:8在第一个子组中,以下子组如下: 9:17, 18:23, 24:33, 34:41。请注意,我将我正在使用的数据称为“ b1”,为将 b1 的元素分组为子组而创建的索引是“ indx”。我可以像这样使用 sapply 找出每个子组中的最小值:

sapply(indx, function(i) min(b1[i])

但是,我一直在寻找上面提供的每个数字是哪个“b1”元素。我知道我可能需要函数which()and mapply(),但无法将它放在一起。

可重现的数据:

b1 <- sample(1:20,41,T)
starts <- c(1,9,18,24,34)
stops <- c(8,17,23,33,41)
indx <- mapply(seq, from=starts, to=stops)
4

1 回答 1

3

基本上是你自己想出来的。

尝试

sapply(indx, function(i) which.min(b1[i]))

编辑

我不确定这是否真的是你想要的。上面的答案应该返回每个子组中最小元素的索引。

在这种情况下,您可以执行以下操作(可能是多种可能的方法之一):

indices <- 1:length(b1)
sapply(indx, function(i) indices[i][which.min(b1[i])])
于 2013-03-20T18:28:40.033 回答