【问题标题】:Find length of subvectors in R在 R 中查找子向量的长度
【发布时间】:2014-05-19 08:09:35
【问题描述】:

给定以下向量:

signal <- c(0011100110)

我想找到一种计算平均信号长度的方法。这里第一个信号的长度为 3(111),第二个信号的长度为 2。但是我想不出一个很好的方法将原始向量子集为仅包含 1 的子向量,以便我可以计算它们的平均长度。

【问题讨论】:

  • 我不同意上面发布的副本,但这之前肯定已经回答过了。查看 1) strsplit 和 2) rle。哦,好吧...rle( strsplit( as.character(signal) , "" )[[1]] ) 应该足够让你开始了。
  • 请注意 0011100110 == 11100110(它不是 bin 基数中的数字)

标签: r vector subset


【解决方案1】:

您可以使用这种方法找到平均信号长度:

signal <- 0011100110

mean(nchar(strsplit(as.character(signal), "0+")[[1]]))
# [1] 2.5

【讨论】:

    【解决方案2】:

    另一种选择是使用gregexprmatch.length 属性:

    mean(attr(gregexpr('1+', signal)[[1]],"match.length"))
    [1] 2.5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-06
      • 2015-03-31
      • 2023-04-08
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多