【问题标题】:which element is the minimum value of each sublist哪个元素是每个子列表的最小值
【发布时间】:2013-03-20 18:23:08
【问题描述】:

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

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

但是,我一直在寻找上面提供的这些数字中的每一个是哪个“b1”元素。我知道我可能需要函数which()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)

【问题讨论】:

  • 你能澄清b1(i)的意思吗? b1 是函数吗?
  • b1 是创建子列表之前的整个记录​​。 b1[i] 是为 min 函数提取 b1 个分量。我为错误道歉,我使用 () 而不是 []。

标签: r


【解决方案1】:

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

试试

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

编辑

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

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

indices <- 1:length(b1)
sapply(indx, function(i) indices[i][which.min(b1[i])])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2019-04-08
    相关资源
    最近更新 更多