匹配向量内的向量

2024-06-26

I have:

vec1 <- c(0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1)
vec2 <- c(1, 1)

我预计:

magicFUN(x = vec1, y = vec2)
[1] 4 7 8

这意味着我想要一个完整向量在另一个向量内的位置。match and is.element没有用,因为它们返回每个元素的位置vec2我需要那个magicFUN匹配完整的vec2 into vec1.


通用解决方案:

magicFUN <- function(vec1, vec2) {
  if(length(vec2) > length(vec1)) stop("vec 2 should be shorter")
  len <- length(vec1) - length(vec2) + 1
  out <- vector(mode = "logical", length=len)     
  for(i in 1:len) {
    out[i] <- identical(vec2, vec1[i:(i+length(vec2)-1)])
  }
  return(which(out))
}

vec1 <- c(0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 1)
vec2 <- c(1, 1)

magicFUN(vec1, vec2)

[1] 4 7 8

for 循环将是最快的解决方案(除了使用 Rcpp 之外)。请参阅下面的基准:

magicFUN <- function(vec1, vec2) {
  if(length(vec2) > length(vec1)) stop("vec 2 should be shorter")
  len <- length(vec1) - length(vec2) + 1
  out <- vector(mode = "logical", length=len)     
  for(i in 1:len) {
    out[i] <- identical(vec2, vec1[i:(i+length(vec2)-1)])
  }
  return(which(out))
}

magicFUN2 <- function(vec1, vec2){
  l1 <- length(vec1)
  l2 <- length(vec2)
  which(colSums(sapply(1:(l1-l2), function(i) vec1[i:(i+l2-1)]) == vec2) == l2)
}

magicFUN3 <- function(vec1, vec2){
  which(c(zoo::rollapply(vec1, width=length(vec2), 
                    function(x)all(x==vec2), align = "left"),rep(FALSE,length(vec2)-1))==TRUE)
}

library(microbenchmark)
microbenchmark(magicFUN(vec1, vec2), magicFUN2(vec1, vec2), magicFUN3(vec1, vec2))

Unit: milliseconds
                  expr       min        lq      mean    median        uq       max neval cld
  magicFUN(vec1, vec2)  6.083572  6.575844  7.292443  6.878016  7.421208  13.35746   100  a 
 magicFUN2(vec1, vec2)  8.289640  8.976736 11.007967  9.338644  9.951492 139.68886   100  a 
 magicFUN3(vec1, vec2) 39.131268 42.369479 46.303722 44.203563 45.053252 172.46151   100   b
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

匹配向量内的向量 的相关文章

  • 动态显示仪表板页面

    我有一个实用的闪亮应用程序 它使用shinydashboard包裹 新功能需要特定于用户的行为 例如 针对不同的用户名使用不同的数据集 因此我打算 显示登录表单 验证凭据并设置反应值LoggedIn to true如果成功的话 显示实际情况
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 使用 ggplot2 在一张画布上绘制多个图形[重复]

    这个问题在这里已经有答案了 我正在尝试根据此表将两个 ggplot2 图合并为一个图 Type RatingA RatingB 1 One 3 36 2 Two 5 53 3 One 5 57 4 One 7 74 5 Three 4 38
  • 如何按组计算日期之间的时间差

    我有一个包含日期 时间和位置的数据框 我想计算组内记录与上一条记录 根据日期排列 之间的分钟差异 并变异为新列 我已经弄清楚如何使用循环来完成此操作 但这仅适用于所有组 位置 而且我不确定如何按组执行此操作 fake data set fo
  • 贝叶斯网络中一个节点的条件概率修改(R代码)

    估计贝叶斯网络中的条件概率后 我问了一个节点 Inlet gas total Pressure 的概率如下 bn mle before Inlet gas total pressure 节点 Inlet gas total Pressure
  • 使用 dplyr 进行括号转义的表名称

    我正在以编程方式获取一堆数据集 其中许多数据集都有以数字开头的愚蠢名称 并且其中包含特殊字符 例如减号 因为没有一个数据集特别大 而且我希望 R 能够对数据类型做出最好的猜测 所以我使用 dplyr 将这些表转储到 SQLite 中 我使用
  • 将鼠标悬停在 ggplot 上时更新 CSS 和渲染工具提示以错误的顺序发生

    我在这里构建了一个虚拟应用程序 它为 ggplot 生成悬停消息 并确保它们保持在屏幕边界内 我编写了一些计算来确定所需的 CSS 更正并将其发送到服务器 它基于将悬停消息保留在此处的第一次尝试 SO问题 https stackoverfl
  • 两个数据框之间逐元素的百分比变化

    我有 2 个数据框 它们具有相同数量的匹配列和行 例如 df 2010 lt data frame col1 c Connecticut Delaware District of Columbia Florida Georgia col2
  • 如何使用R在csv文件中按列添加数据?

    我有向量中包含的信息 例如 sequence1 lt seq 1 20 sequence2 lt seq 21 40 我想将该数据附加到文件中 所以我使用 write table sequence1 file test csv sep ap
  • 更改分配新变量的默认环境

    我经常想在全局环境下的一个环境中创建很多变量 这可以通过以下方式轻松完成envir论证sys source 如果由正在获取的文件创建的所有变量都应该进入单个环境 但我通常使用创建变量集的文件 一组应该进入一个环境 另一组应该进入另一个环境
  • 如何在 dbplyr 中使用自定义 SQL 函数?

    我想计算数据库中的 Jaro Winkler 字符串距离 如果我将数据带入 R 使用collect 我可以轻松地使用stringdist函数从stringdist包裹 但我的数据非常大 我想过滤 Jaro Winkler 距离before将
  • 将数据帧的每一列乘以向量的相应值[重复]

    这个问题在这里已经有答案了 我有以下数据框和向量 dframe lt as data frame matrix 1 9 3 vector lt c 2 3 4 我想将每一列相乘dframe通过相应的值vector 这不会做 gt vecto
  • 包“diamonds”不可用(对于 R 版本 3.0.0)[重复]

    这个问题在这里已经有答案了 在我的 R 环境中拥有钻石包 数据集的简单方法是什么 我是使用 RStudio 3 0 的新手 gt install packages diamonds Warning in install packages p
  • 将最新的 R 安装路径从注册表添加到 PATH windows 7/8/10

    嗨 我是 Windows 批处理新手 我想向打电话的同事分发一个 runMe bat 文件Rscript myRfile R处理一些数据文件 但众所周知 我的同事在不同地方安装了 R 我不能指望他们知道如何将 Rscript 添加到 PAT
  • R 绘制一些 unicode 字符,但不绘制其他字符

    我们的系统管理员刚刚将我们的操作系统升级到 SLES12SP1 我重新安装了 Rv3 2 3 并尝试绘图 我用cairo pdf并尝试绘制 x 标签为的图 u0298即太阳能符号 但它不起作用 标签只是空白 例如 cairo pdf Rpl
  • R 中的离散化

    有谁知道有一个包可以实现连续变量离散化的监督学习算法 dprep 包包含类似的功能 但该包已被弃用 有任何想法吗 感谢您的帮助 您仍然可以使用dprep包 但你必须从源代码安装它 我刚刚测试过 它运行良好 不过 您或许可以看看离散化 htt
  • 我想将两个变量合并为一个具有日期格式的变量

    我有一个包含几个月的字符列的数据集 MONTH 和指示年份的数字列 YEAR 为了将其用作面板数据 我需要将这些结合起来YEAR and MONTH转换为日期格式的变量 我尝试过改变变量MONTH转换为数字格式 然后合并MONTH与柱YEA
  • 在ggplot2中设置base_size时重叠轴标签

    我正在改变base size via theme set 当我在屏幕上查看结果图时 它看起来很棒 但是 当我将其另存为 pdf 时 x 轴标签有点太接近轴编号 一件小事 theme set theme bw base size 9 不会造成
  • 在 R 中,将一列值与所有其他列进行比较

    我对 R 非常陌生 我有一个问题对于这里的专家来说可能非常简单 假设我有一个表 sales 其中包含 4 个客户 ID 123 126 和 4 个产品 A B C D ID A B C D 123 0 1 1 0 124 1 1 0 0 1
  • R 中带有自定义字段类的参考类?

    我想在另一个引用类中使用自定义引用类 但此代码失败 nameClass lt setRefClass nameClass fields list first character last character methods list ini

随机推荐

  • 解雇ViewControllerAnimated:完成:在 iOS 8 上

    在 iOS dismissViewControllerAnimated completion 会导致presentedViewController being nil 在 iOS 8 中 presentedViewController仍然指
  • 如何在 PHP 中获取有用的错误消息?

    我经常尝试运行 PHP 脚本 但只是得到一个空白屏幕 无错误信息 只是一个空屏幕 原因可能是一个简单的语法错误 错误的括号 缺少分号 或者函数调用失败 或者完全是其他原因 很难找出哪里出了问题 我最终注释掉了代码 在各处输入 echo 语句
  • 致命Python错误:init_import_size:无法在Anaconda Prompt中导入站点模块

    当我启动 Anaconda Prompt 时 收到以下错误消息 致命 Python 错误 init import size 无法导入站点模块 Python运行时状态 已初始化回溯 最近一次调用最后一次 文件 C Users blue App
  • 如何在 UICollectionView PerformBatchUpdates 块中排序移动、插入、删除和更新?

    In my UICollectionView 我使用一个简单的自定义对象数组来生成和显示单元格 有时数据会发生变化 我想一次性为所有变化添加动画效果 我选择通过跟踪第二个数组中的所有更改 比较两个数组并在一个数组内生成一组移动 插入 删除和
  • 带有 pygame 的 Pyinstaller

    我曾多次尝试使用 PyInstaller 来捆绑我的 Python2 程序 但它似乎从未与 Pygame 模块一起使用 我已经看到了有关此主题的许多其他问题 但我找不到任何有用的答案 有人知道这个问题的解决方案吗 我正在尝试在 Ubuntu
  • iPhone - 动画视图控制器演示

    我有一个 UINavigationControl 我想呈现一个视图控制器 将其从顶部推送 并将其从视图中删除 将其推送到顶部 有没有办法更改调用时使用的默认动画 self navigationController pushViewContr
  • Psycopg2 中的元命令 - \d 不起作用

    我希望使用列出表的所有列名psycopg2Python 包 2 7 但我无法执行以下查询 cur execute d my table psycopg2 ProgrammingError syntax error at or near 对于
  • 有向图 SQL

    我有以下数据集 它表示有向图中的节点 CREATE TABLE nodes NODE FROM VARCHAR2 10 NODE TO VARCHAR2 10 INSERT INTO nodes VALUES GT TG INSERT IN
  • 使用 ServiceStack JsonSerializer 反序列化包含 Dictionary 属性的类型

    下面的代码片段显示了我可以实现此目的的两种方法 第一个是使用MsgPack https github com msgpack msgpack cli第二个测试是使用ServiceStack 的 JSONSerializer https gi
  • 客户端与服务器端图像压缩[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在研究用户可以上传图片的东西 图像大小不受限制 现在我有两个选择使用PHP 服务器端 压缩图像或使用
  • 接受 05/05/1999 和 5/5/1999 等的日期时间解析

    有没有一种简单的方法来解析可能为 MM DD yyyy M D yyyy 或某种组合的日期 即 在一位数字的日期或月份之前 零是可选的 要手动执行此操作 可以使用 String dateFields dateString split int
  • 在 contenteditable div 中的插入符处插入 html

    我有一个带有 contenteditable 设置的 div 并且我正在使用 jquery 捕获按键 以在按下 Enter 键时调用 PreventDefault 如同这个问题 https stackoverflow com questio
  • 包含菜单按钮的 Ag-grid 单元格

    我在我的项目中使用社区版本的 ag grid 我正在尝试在每一行的一个单元格中添加菜单按钮 单击菜单按钮时 应该会弹出菜单 其中包含编辑 删除 重命名选项 并且当单击菜单上的任何项目时 我需要触发具有行值的事件 我正在尝试创建一个将显示按钮
  • 如何使用 Android 的身份验证标签进行 GCM 加密

    我想制作一个通过 GCM 模式与 Android 身份验证标签加密数据的函数 这是我的源代码 public static byte GCMEncrypt String hexKey String hexIV byte aad throws
  • Javascript 选择器中的实时收集和非实时收集有什么区别?

    我怎么知道现场采集和非现场采集有什么区别 根据我的研究 A liveis 当 DOM 中的更改反映在集合中时 当节点修改时 内容也会发生变化 A Not Liveis 当 DOM 中的任何更改都不会影响集合的内容时 document get
  • Java:如何实现通用二叉搜索树?

    到目前为止 我一直在编写一个 Node 类 class Node private value private Node left private Node right public int getValue return value pub
  • Google+ 风格的平铺照片库

    有没有人见过一个 javascript 库 它会生成一个照片库 类似于 Google 和现在的 Facebook 组织照片的方式 其中一些照片被裁剪 但所有照片都无缝地填充了一个空间 像这样的东西 我正在四处挖掘并发现了这个 虽然有点不同
  • ofstream::operator<<(streambuf) 是一种复制文件的缓慢方法

    我需要一种跨平台 无需外部库的复制文件的方式 在我的第一遍中 我想出了 省略错误处理 char buffer LEN ifstream src srcFile ios in ios binary ofstream dest destFile
  • 从 SwiftUI 视图转至 UIViewController

    我正在努力将一些 SwiftUI 内容实现到我现有的应用程序中 我目前有一个 UIViewController 它托管一个用于相机预览的 MTKView 我创建了一个新的 SwiftUI 视图 它现在是我的root视图 如我的设置Scene
  • 匹配向量内的向量

    I have vec1 lt c 0 0 0 1 1 0 1 1 1 0 0 1 vec2 lt c 1 1 我预计 magicFUN x vec1 y vec2 1 4 7 8 这意味着我想要一个完整向量在另一个向量内的位置 match