如何用值向量填充索引矩阵

2024-01-12

我有一个矩阵(m.idx),其中包含我想要索引的向量的位置元素。

> m.idx
     [,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3    4    5
[2,]    3    4    5    6    7
[3,]    5    6    7    8    9

假设 x 是我的向量。

x <- c(9,3,2,5,3,2,4,8,9)

我想用相应的位置元素重新填充矩阵索引x.

所以我会...

> m.pop
     [,1] [,2] [,3] [,4] [,5]
[1,]    9    3    2    5    3
[2,]    2    5    3    2    4
[3,]    3    2    4    8    9

我可以通过以下方式以一种笨拙的方式做到这一点。

> m.pop <- t(matrix(t(matrix(x[c(t(m.idx))])),ncol(m.idx),nrow(m.idx)))

> m.pop
     [,1] [,2] [,3] [,4] [,5]
[1,]    9    3    2    5    3
[2,]    2    5    3    2    4
[3,]    3    2    4    8    9

但似乎可能有一种更简单的方法来索引值。 最好的(对于大型集合来说是最快/高效的)方法是什么?


怎么样:

m.idx[] <- x[m.idx]
m.idx
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    9    3    2    5    3
# [2,]    2    5    3    2    4
# [3,]    3    2    4    8    9

或者如果您不想覆盖m.idx矩阵,你可以这样做:

m.pop <- m.idx
m.pop[] <- x[m.pop]

Added:

另一种方法,使用structure,也相当快:

structure(x[m.idx], .Dim = dim(m.idx))
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    9    3    2    5    3
# [2,]    2    5    3    2    4
# [3,]    3    2    4    8    9

当应用于大m.idxAnanda Mahto 的答案中的矩阵,我机器上的计时是

fun5 <- function() structure(x[m.idx], .Dim = dim(m.idx))
microbenchmark(fun1(), fun2(), fun3(), fun4(), fun5(), times = 10)
# Unit: milliseconds
#    expr       min        lq    median        uq       max neval
#  fun1()  303.3473  307.2064  309.2275  352.5076  353.6911    10
#  fun2()  548.0928  555.3363  587.6144  593.4492  596.5611    10
#  fun3()  480.6181  487.5807  507.5960  529.9696  533.0403    10
#  fun4() 1222.6718 1231.3384 1259.8395 1269.6629 1292.2309    10
#  fun5()  401.8450  403.7216  432.7162  455.4638  487.1755    10
identical(fun1(), fun5())
# [1] TRUE

你可以看到structure就速度而言其实还不错。

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

如何用值向量填充索引矩阵 的相关文章

  • R 中的龙卷风图

    我正在尝试在 R 中绘制龙卷风图 又名敏感性图 目标是可视化某些变量增加 10 和减少 10 的效果 到目前为止我已经得到这个结果 这是我正在使用的代码 Tornado plot data lt matrix c 0 02 0 02 0 0
  • R 编程常用工具

    如果已经以不同的方式问过这个问题 我深表歉意 但我找不到任何达到我想要的东西 我真的是从其他软件包 SPSS 开始接触 R 的 当我了解真正可以做什么时 我意识到我还需要其他 工具 这让我想到了我的问题 您有哪些用于开发 R 代码的设置 我
  • 如何将同一行中以逗号分隔的值拆分到R中的不同行

    我有一些数据来自谷歌表格 https forms gle rGQQL3tvA1PrE4dD8我想拆分以逗号分隔的答案 and 复制参与者的 ID 数据如下 gt head data names Q2 Q3 Q4 1 PART 1 fruit
  • 如何在 R 中将字符串解析为层次结构或树

    有没有办法将表示组的字符串解析为 R 中的层次结构 假设我的小组结构如下 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 3 1 1 3 1 1 1 3 2 1 1 3 3 1 2 1 2 1 1 2 1 1 1 2 1 2 1
  • 更快的 %in% 运算符

    The 快速匹配 https cran r project org web packages fastmatch index html包实现了更快的版本match对于重复匹配 例如在循环中 set seed 1 library fastma
  • 读取R中打开的Excel文件

    有没有办法将打开的Excel文件读入R 当Excel中打开一个excel文件时 Excel会对文件加锁 比如R中的read方法无法访问该文件 你能绕过这个锁吗 Thanks 编辑 这发生在带有原始 Excel 的 Windows 下 发生错
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • R- 将某些列从 0 标准化为 1,其值等于 0

    我最近开始使用 are 我想扩展我的数据矩阵 我在这里找到了一种方法在两点之间缩放系列 https stackoverflow com questions 5468280 scale a series between two points
  • 删除字符串末尾的句点和数字

    如何删除尾随句点 后面紧跟一个数字 长度为一位或两位数字 例子 z lt c awe p 56 red 45 ted 5 you 88 tom 我只想删除 45和 5 你只需要一个简单的正则表达式 z new gsub 0 9 z 一些评论
  • 融化R中的下半矩阵

    如何融化下半三角形加对角矩阵 11 NA NA NA NA 12 22 NA NA NA 13 23 33 NA NA 14 24 34 44 NA 15 25 35 45 55 A lt t matrix c 11 NA NA NA NA
  • 如何在knitr和RStudio中为word和html设置不同的全局选项?

    我正在使用 RStudio 0 98 932 和 knitr 1 6 想要为word和html设置不同的全局knitr选项 例如 想要将word的fig width和fig height设置为6 html的fig width和fig hei
  • 如何在 Caret 中绘制随机森林(护林员)树

    我生成了如下所示的随机森林树 并尝试绘制它 但出现错误 我在哪里犯了错误 我怎样才能以正确的方式绘制它 Actmodel lt train Activity Section Author data CB1 method ranger trC
  • 如何在 R 中合并同名列表中的数据框?

    我有一个包含很多数据框的列表 如果它们具有相同的名称 我想合并它们 即合并所有具有相同名称 a 和 b 的数据框 像这样 a lt aaaaa b lt bbbbb c lt ccccc g lt list df1 lt data fram
  • 将字符串列拆分为多个虚拟变量

    作为 R 中 data table 包的相对缺乏经验的用户 我一直在尝试将一个文本列处理为大量指示符列 虚拟变量 每列中的 1 表示特定的子字符串是在字符串列中找到 例如我想处理这个 ID String 1 a b 2 b c 3 c 进入
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • 将 ftransform 与折叠 R 包中的 fgroup_by 一起使用

    我正在尝试重现以下输出dplyr代码与R包裹collapse dplyr Code library tidyverse starwars gt select name mass species gt group by species gt
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • R 闪亮仪表板中的动态重复条件面板

    我正在尝试创建一个动态条件面板 所以我的条件如下 在用户界面中输入 selectInput inpt Input Number seq 1 50 1 selectize FALSE 我的条件面板 UI 输入是 conditionalPane
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 绘制 Cox 回归的 Kaplan-Meier 图

    我使用 R 中的以下代码设置了一个 Cox 比例风险模型来预测死亡率 添加协变量 A B 和 C 只是为了避免混淆 即年龄 性别 种族 但我们真正对预测变量 X 感兴趣 X 是一个连续变量 cox model lt coxph Surv t

随机推荐

  • 如何通过 from_avro 标准函数使用 Confluence Schema Registry? [复制]

    这个问题在这里已经有答案了 My Kafka 和 Schema Registry 基于 Confluence Community Platform 5 2 2 My Spark 版本为 2 4 4 我使用以下命令启动 Spark REPL
  • 使用 getter/setter 与“告诉,不要问”?

    只讲原则 不问原则here http pragprog com articles tell dont ask当我使用 getter 或 setter 时 经常会粘贴到我身上 人们告诉我不要使用它们 该网站清楚地解释了我应该做什么和不应该做什
  • 如何通过深度链接传递数据?

    我的应用程序中有一个报价列表 每个列表项上都有一个共享按钮 当任何用户单击共享链接时 我正在使用深层链接打开我的应用程序的报价详细信息活动 我处于以下情况当有人点击链接时 我的详细信息页面活动就会被触发 但是我怎么知道 当有人点击共享深层链
  • C++ 检查大括号是否匹配

    我被要求作为一项额外的编程挑战 看看大括号是否在随机字符串或字符中匹配 如下所示 1 1 将返回 1 而 1 1 将返回 0 这是我到目前为止所拥有的 但它似乎没有做任何事情 任何帮助都会很棒吗 谢谢 bonus cpp include
  • Tkinter - 将文本插入画布窗口

    我有一个 Tkinter 画布 其中填充了文本和画布窗口或小部件 使用create text and create window方法 我放置在画布上的小部件是文本小部件 我想在创建和放置它们后将文本插入其中 我不知道如何做到这一点 如果可能
  • 如何对数据框中的列进行重新排序?

    如何更改此输入 顺序为 时间 输入 输出 文件 Time In Out Files 1 2 3 4 2 3 4 5 对于此输出 顺序为 时间 输出 输入 文件 Time Out In Files 1 3 2 4 2 4 3 5 这是虚拟 R
  • 使用 urllib 发出 post 请求

    我正在尝试向 API 提供商提出请求 curl https api infermedica com dev parse X POST H App Id 4c177c H App Key 6852599182ba85d70066986ca2b
  • 如何将第三方 javascript 库与 ionic4 和电容器一起使用?

    使用 Ionic 4 Angular 应用程序和 Capacitor 安装第三方 javascript 库的正确方法是什么 我尝试安装克鲁克图书馆 https github com jackedgson crunker如下 npm inst
  • Angular 2 中不同页面的多种布局

    我有一个登录页面 只有 2 个输入 无页眉 无页脚 无侧边栏 当用户登录时 他应该导航到带有页眉 页脚和右侧导航栏的页面 内页唯一改变的是右侧内容 import Component from angular core import View
  • Android Studio 中相对布局问题中按钮顶部的进度条

    好吧 这是一个奇怪的问题 我希望有人能向我解释一下 我有一个自定义按钮布局 它创建一个按钮 按钮中间有一个圆形进度条 我的 XML 代码如下 然而我无法解决的是ProgressBar似乎出现在按钮后面 如果我将按钮背景设置为透明以外的任何内
  • Spring Boot 组件扫描不起作用

    我创建了一个示例 Spring Boot 应用程序 当服务类全部位于一个包中时 该应用程序运行得非常好 但如果服务类引用不同包中的另一个服务类 那么我会收到 BeanCreationException 应用程序的代码如下 主程序 java
  • GLEW:Apple Mach-O 链接器 (Id) 错误

    我试图在我的 Xcode 项目中使用 glew 但我得到了这个 Apple Mach O Linker Id Error Undefined symbols for architecture x86 64 我正在使用从他们下载的最新版本的g
  • Protocol buffers 从原始消息中检测类型

    是否可以检测原始协议缓冲区消息的类型 以字节 为单位 我遇到的情况是端点可以接收不同的消息 并且我需要能够在反序列化之前检测到类型 我正在使用 protobuf net 您无法单独检测类型 因为 protobuf 规范不会为此向流添加任何数
  • 如何使用presto查询hive数据

    我刚刚安装了 presto 当我使用 presto cli 查询 hive 数据时 出现以下错误 presto server node6 8080 catalog hive schema default presto default gt
  • Xcode 9 - 无法附加到 pid 进行框架单元测试

    使用时间机器从一台 Mac 迁移到另一台 Mac 后 我收到以下错误 无法附加到 pid 确保 项目标题 尚未运行 并且 系统用户名 有调试权限 仅当运行 任何 框架项目的单元测试时才会发生该错误 在模拟器和设备上运行应用程序效果很好 为应
  • 在 C# 中从 LINQ 提取 SQL 列扩展属性

    我有一个 SQL 表 每列都有扩展属性 有没有办法使用 Linq2SQL 从 C 中的 LINQ 访问这些 像 MS Description 之类的东西 不 据我所知 您可以编写一个与数据库中的存储进行对话的 SP 获取数据库对象名称和列名
  • 找不到 Storm 日志查看器页面

    我可以在多租户集群中提交拓扑作业 作业正在运行 但是 日志查看器页面不可用 有什么办法可以解决这个问题吗 在单击之前您需要启动日志查看器topology port查看日志查看器 要启动日志查看器 请运行 storm logviewer和你跑
  • 从二维列表中获取唯一元素

    我有一个二维列表 我像这样创建 Z1 0 for x in range 3 for y in range 4 然后我继续填充这个列表 这样Z1看起来像这样 1 2 3 4 5 6 2 3 1 2 5 1 我需要提取unique 1x3要点Z
  • 更改ios8扩展导航栏颜色

    我正在开发 iOS8 应用程序扩展 照片编辑扩展 我尝试过这些方法来更新导航栏颜色 但失败了 UINavigationBar appearance setBarTintColor UIColor yellowColor UINavigati
  • 如何用值向量填充索引矩阵

    我有一个矩阵 m idx 其中包含我想要索引的向量的位置元素 gt m idx 1 2 3 4 5 1 1 2 3 4 5 2 3 4 5 6 7 3 5 6 7 8 9 假设 x 是我的向量 x lt c 9 3 2 5 3 2 4 8