为矩阵的每一行查找 5 个连续的数字 >= 3

2023-11-29

我有以下矩阵

mdat <- matrix(c(6,2,4,4,'*',5,1,6,'*',2,1,5,1,3,3,5,4,'*',5,'*',1,'*',4,'*',2,2,4,3,4,4,4,'*',4,3,3,1,1,3,2,3,3,3,3,3,2,2,'*','*',2,1,2,2,2,2,2,1,1,1,1,1,'*',1,1,1,1,1 ),nrow = 6, ncol = 11, byrow = TRUE)



[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
[1,] "6"  "2"  "4"  "4"  "*"  "5"  "1"  "6"  "*"  "2"   "1"  
[2,] "5"  "1"  "3"  "3"  "5"  "4"  "*"  "5"  "*"  "1"   "*"  
[3,] "4"  "*"  "2"  "2"  "4"  "3"  "4"  "4"  "4"  "*"   "4"  
[4,] "3"  "3"  "1"  "1"  "3"  "2"  "3"  "3"  "3"  "3"   "3"  
[5,] "2"  "2"  "*"  "*"  "2"  "1"  "2"  "2"  "2"  "2"   "2"  
[6,] "1"  "1"  "1"  "1"  "1"  "*"  "1"  "1"  "1"  "1"   "1"  

我试图为每行找到 5 个连续数字 >= 3 并将初始数字和最终数字的位置写入 txt 文件,在示例中,第 3 行和第 4 行分别有从第 5 列和第 7 列开始的 5 个数字,应该:

initial = [3,5] final [3,9]
initial = [4,7] final [4,11]

以下解决方案几乎可以工作,但错过了第一个识别行(第 3 行)的 ini 和最终值

element<-0
ini<-1
final<-1
consecutives<-0
zz<-file("C:/consecutives.txt","w")
for (i in 1:6){
for (j in 1:11) {
 if (b[i,j] != "*"){
    element<-as.integer(b[i,j])
       if (element>=3)
     {ini<-j
          consecutives<-consecutives+1
      row<-i 
      if (consecutives>=5){
         final<-j
        writeLines(paste("element",toString(element), "Row", toString(row),  "ini", toString(ini),"final",toString(final)) ,con=zz,sep = "\n")
     }

      }


  }
else consecutives<-0

}

}

close(zz)

如果使用模式 numeric 和NA代替"*":

 mdat <- matrix(c(6,2,4,4,NA,5,1,6,NA,2,1,5,1,3,3,5,4,NA,5,NA,1,NA,4,NA,2,2,4,3,4,4,4,NA,4,3,3,1,1,3,2,3,3,3,3,3,2,2,NA,NA,2,1,2,2,2,2,2,1,1,1,1,1,NA,1,1,1,1,1 ),nrow = 6, ncol = 11, byrow = TRUE)

然后你可以使用rle找到序列TRUEx >= 3:

apply(mdat, 1, function(x) {
  r <- rle(x >= 3)
  w <- which(!is.na(r$values) & r$values & r$lengths > 4)
  if (length(w) > 0) {
    before <- sum(r$lengths[1:(w[1]-1)])
    c(before+1,before+ r$lengths[w[1]])
  } else
    NULL
})

[[1]]
NULL

[[2]]
NULL

[[3]]
[1] 5 9

[[4]]
[1]  7 11

[[5]]
NULL

[[6]]
NULL
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为矩阵的每一行查找 5 个连续的数字 >= 3 的相关文章

  • 使用 r 以周为单位对数据进行分组

    I have a CVS file which has data for different countries at different weeks of this year I want to create a summary data
  • R:交换两个变量而不使用第三个变量

    我有两个变量 即 a lt 1 b lt 2 我想交换他们的价值观 是否有任何内置的 R 函数能够执行该操作 或者是否有其他优雅的方式 而不使用第三个 临时 变量 Note 如果可能的话适用于字符串或其他数据类型 有一个通用的解决方案或 技
  • 闪亮的传单添加大量分离的折线

    我有一个 200k 行数据集 其中包含出发地和目的地的坐标 我有一个 R 闪亮的应用程序 带有传单地图 可以在这些坐标上显示圆圈 尽管坐标数量很大 但效果很好 这是数据的简化示例 每行包含出行id 出发地经纬度 目的地经纬度 id lat
  • 如果 RCurl::getURL() 执行时间太长,如何停止执行?

    有没有办法告诉 R 或 RCurl 包在超过指定时间段时放弃尝试下载网页并转到下一行代码 例如 gt library RCurl gt u http photos prnewswire com prnh 20110713 NY34814 b
  • OpenStreetMap 不显示在 RStudio 中(使用 R 3.2.1)

    我正在使用来自的代码here https rstudio github io leaflet library leaflet m lt leaflet gt addTiles gt addMarkers lng 174 768 lat 36
  • 为什么表达式“1”==1 的计算结果为 TRUE? [复制]

    这个问题在这里已经有答案了 1 是字符值 其他1是数字 甚至 当我尝试在下面执行时 它给了我 TRUE as character 0 as numeric 0 谁能帮助我理解 为什么 来自help 如果两个参数是不同类型的原子向量 则其中一
  • GitHub 操作 setup-r-dependency 失败,说明没有名为“digest”的包

    我一直在尝试设置一些 GitHub 操作来自动检查我的 R 包并运行测试覆盖率 我目前正在使用 setup r dependency v2 操作来安装依赖项 但无法安装包 digest 返回以下错误 Error Error
  • R闪亮:基于checkboxgroupinput的子集数据

    我想根据复选框输入动态选择的列对数据进行子集 有什么方法可以使我的输入文件在我的代码中全局可用 以便可以方便地进行进一步的操作 以下是我的代码 Server R library shiny shinyServer function inpu
  • Dplyr 过滤多个类似条件

    我正在尝试在 dplyr 中做一个过滤器 其中的列就像某些观察结果 我可以使用 sqldf 作为 Test lt sqldf select from database Where SOURCE LIKE ALPHA OR SOURCE LI
  • 了解日期并使用 R 中的 ggplot2 绘制直方图

    主要问题 当尝试使用 ggplot2 制作直方图时 我无法理解为什么日期 标签和中断的处理无法像我在 R 中预期的那样工作 我在找 我的约会频率的直方图 刻度线位于匹配条下方的中心 日期标签在 Y b format 适当的限制 最小化网格空
  • “条件长度 > 1 并且仅使用第一个元素”错误

    我对 f 语句有疑问 因为它返回给我以下错误消息 条件长度 gt 1 并且仅使用第一个元素 我有一个名为 data summary 的数据框 我想创建两个新变量vol up and vol down取决于我的数据框的其他变量 这是我的脚本代
  • 二部图匹配以匹配两个集合

    我是新手igraphR 中的包 我有两套A and B 每个都有N顶点 A1 A2 AN and B1 B2 BN 每个元素之间都有一个边缘A对每一个元素B 我有一个函数fWgt Ai Bj 返回之间的边的权重Ai and Bj 我一直在尝
  • 在 mutate pipeline 中按组获取唯一 ID [重复]

    这个问题在这里已经有答案了 自从新的 dplyr v1 0 0 更新发布以来 我注意到该功能group indices 有 已弃用 我在工作中经常使用这个功能 并且我喜欢在mutate 例如使用dplyr v0 8 3我能够非常轻松地做这样
  • 计算数据集列的百分位数

    最亲爱的 R 专家 为您快速介绍一下 我正在做一项作业 在这个练习中 我被要求从数据中获取基本统计数据infert数据集 它是内置的 特别是其中的一列 infert age 对于不熟悉数据集的人 gt table ages Which is
  • 使用带有字边界的 mgsub 函数作为替换值

    我试图用空格替换向量中字符串元素的子字符串 以下是我们正在考虑的向量 test lt c PALMA DE MALLORCA THE RICH AND THE POOR A CAMEL IN THE DESERT SANTANDER SL
  • x[floor(d)] + x[ceiling(d)] 中的错误:二元运算符的非数字参数

    我试图绘制病毒载量和试验组的简单箱线图 但不断收到此错误 x floor d x ceiling d 中的错误 二元运算符的非数字参数 dataset PatientID trial arm viral load 1 club 19 2 c
  • R 语言 NaN + NA 行为

    我有一个关于 R 中算术行为的问题 看下面这段代码 gt NaN NA 1 NaN gt gt gt NaN as integer NA gt NA 所以 我很困惑这两个添加给出了不同的结果 有谁知道这是否是真正想要的行为还是只是某种错误
  • 使用 dplyr 创建 t.test 表?

    假设我有如下所示的数据 set seed 031915 myDF lt data frame Name rep c A B times c 10 10 Group rep c treatment control treatment cont
  • r - ggplot2 - 突出显示选定的点和奇怪的行为

    我想突出显示选定的点并遇到一些奇怪的行为 首先是一些虚拟数据 a lt 1 50 b lt rnorm 50 mydata lt data frame a a b b ggplot mydata aes x a y b geom point
  • 将数据帧单列中的值向上移动

    使用这样的示例数据 example data frame x c 1 2 3 4 5 6 7 8 y c 1 2 3 4 5 6 7 8 z c 1 2 3 4 5 6 7 8 看起来像这样 x y z 1 1 1 1 2 2 2 2 3

随机推荐