用不均匀向量列表中的正值替换正表值

2024-04-02

背景

我最近问这个问题 https://stackoverflow.com/questions/72899527/replacing-a-subset-of-table-values-with-a-list-of-vectors。然而,我使示例有点过于简单,因此我在这里添加了一些复杂性,其中向量长度不再等于表长度。

Problem

我有一个表如下:

tableA <- structure(c(1L, 0L, 0L, 0L, 4L, 6L, 0L, 6L, 1L, 3L, 0L, 0L, 0L, 0L, 1L), dim = c(3L, 
                                                                   5L), dimnames = structure(list(c("X", "Y", 
                                                                                                    "Z"), c("A", "B", "C","D", "E")), names = c("", "")), class = "table")

    A B C D E
  X 1 0 0 3 0 (two positive numbers)
  Y 0 4 6 0 0 (two positive numbers)
  Z 0 6 1 0 1 (three positive numbers)

向量列表如下:

    listB <- list(
        "X" = c(0, 4),
        "Y" = c(4, 5),
        "Z" = c(7, 1, 0))

向量不相等,但向量中数字的数量相等positive表中的数字。

我想替换中的所有值tableA, 列数B,C, and D,大于零,对应的值为listB.

期望的输出:

    A B C D E
  X 1 0 0 4 0
  Y 0 4 5 0 0
  Z 0 7 1 0 1 

之前的回答

The sindri_baldur 的原始答案 https://stackoverflow.com/a/72899779/8071608建议如下:

cols2replace  = match(c('B', 'C', 'D'), colnames(tableA))
cells2replace = tableA[, cols2replace] > 0
    
tableB = matrix(unlist(listB), nrow = 3, byrow = TRUE)
tableA[, cols2replace][cells2replace] = tableB[, cols2replace][cells2replace]

然而,在我的实际数据中,向量列表中的向量是不相等的。所以:

tableB = matrix(unlist(listB), nrow = 3, byrow = TRUE)

不起作用。

建议

我想知道我是否不能简单地从中获得所有积极的价值观tableA,将它们替换为 of 的所有正值listB(这样的值是0 in listB不被替换),然后将它们放回表中。我开始如下:

# Get all positive values from the table
library(dplyr)
library(tidyr)
library(stringr)
out <- tableA %>% 
   pivot_longer(cols = -rn) %>% 
   filter(str_detect(value, '\\b0\\b', negate = TRUE)) %>% 
   group_by(rn) %>% 
   summarise(freq = list(value), .groups = 'drop')

但该代码不适用于表格。


假设每个向量中的数字数量为listB等于每行中正数的数量tableA,你可以通过以下方式解决它

tab <- t(tableA)
tab[tab > 0] <- unlist(listB)
tableA[, c('B', 'C', 'D')] <- t(tab)[, c('B', 'C', 'D')]
tableA

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

用不均匀向量列表中的正值替换正表值 的相关文章

随机推荐

  • 如何(优雅地)使用 Q 中断 Promise 链执行

    我有一连串的承诺 如下所示 module exports deleteCommunityFollower function deleteCommunityFollower req res var communityId req params
  • C# WinForms TreeView 删除水平滚动条

    我需要一个只有垂直滚动条的 TreeView I tried this http social msdn microsoft com Forums en US winforms thread 4aa4dade 53a2 4e2e a8b4
  • 为什么我的应用程序从本地化资源中获取错误的字符串?

    我创建了三个本地化文件 en ru uk 我看到问题应用程序可以得到一些字符串正确和一些字符串错误 这是什么意思 例如 一种布局在其工作过程中可以包含多个语言环境 而不是一个语言环境 这是错误的 我看到一些用户通过添加几行代码来解决这个问题
  • 什么更快?结构体数组或数据表

    我正在使用 LinqToSQL 处理来自 SQL Server 的数据 并将其转储到 iSeries 服务器中以进行进一步处理 更多详细信息请点击此处 https stackoverflow com questions 2410466 sp
  • GC 会从元空间收集垃圾吗?

    我一直认为垃圾收集器只清除堆 现在我也这么认为 在java 8中permGen被删除并被Metaspace取代 据我了解元空间是垃圾收集的 https stackoverflow com a 24075360 2674303 https s
  • 在Python交互窗口VSCode中交换shift-enter和回车

    In the interactive window in vscode you press shift enter to run the code you just typed and enter to go to the next lin
  • 为什么compareTo返回一个整数

    我最近在一个 SO 聊天中看到了一个讨论 但没有明确的结论 所以我最终在那里询问 这是出于历史原因还是与其他语言的一致性 在查看签名时compareTo各种语言 它返回一个int 为什么它不返回枚举 例如 在 C 中我们可以这样做 enum
  • 创建对象的数组列表

    如何用对象填充 ArrayList 并且其中的每个对象都不同 ArrayList
  • Kafka 0.8,是否可以使用java代码创建带有分区和复制的主题?

    在 Kafka 0 8beta 中 可以使用下面提到的命令创建主题here http kafka apache org 08 quickstart html bin kafka create topic sh zookeeper local
  • 如何每隔 n 个字符或最近的前一个空格分割字符串

    我想每 15 个字符 包括空格 插入一个换行符 我目前正在使用下面的正则表达式 它在某种程度上起作用 但它占用了单词后最近的空格 并且我想要最近的前一个空格 有任何想法吗 const split str replace s S 15 g 1
  • 拆分 ng 重复项?

    简单的问题 如果我的控制器中有这个 scope somedata Item 1 Item 2 set from something else 有没有办法在 ngRepeat 表达式中分割我的视图的一些数据 就像是 div item div
  • ApiController Post 中的 Async 和 Await

    我仍然不太清楚 net 4 5 中的 async 和 wait 到目前为止 我想我明白了等待 将函数 在其右侧 放在单独的线程上 将执行返回给当前函数的调用者 但会 劫持 当前函数代码的其余部分 直到等待 异步 函数完成 如果我误解了什么
  • 当前上下文中不存在名称“...”

    我的里面有一个清单Main 我正在尝试从变量中将一个项目添加到该列表中 但它抛出了错误 名称 dogList 在当前上下文中不存在 在我的里面addDog 方法 dogList Add 由于上述原因无法正常工作 namespace Dogg
  • postgresql 的 mysql_insert_id 替代品

    有没有替代方案mysql insert id PostgreSQL 的 php 函数 大多数框架通过查找 ID 中使用的序列的当前值来部分解决问题 但是 有时主键不是串行列 从 PostgreSQL 的角度来看 用伪代码来说 insert
  • Android 中的上传和下载速率分析[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试开发一个 Android 应用程序来测量网络的上传和下载速度 我可能需要每 2 秒左右运行一次并对其进行分析 SpeedTe
  • return Json 函数没有更新我的下拉列表

    我有一个包含填充下拉列表的视图 我添加了一个按钮 以便用户可以在 jquery 模式中添加新的下拉列表值 因此当用户单击添加新的下拉列表值时 我想刷新下拉列表 但目前没有任何更新 这是我对下拉列表的看法 model Communique M
  • 调用方法出错,启动jvm失败

    我正在使用 javafx v8 0 40 开发桌面应用程序 我用inno 5创建了一个exe文件 当我在计算机中运行exe文件时 它已安装并运行 没有任何问题 另一方面 当我尝试在其他计算机上安装并运行它时 在安装结束时 会弹出窗口对话框
  • 创建文件系统“驱动程序”

    我想为 Windows 物理磁盘上的自定义文件系统创建一个 驱动程序 我不完全知道解释它的最佳方式 但该设备已经具有适当的驱动程序以及 Windows 与之通信的所有内容 但我希望用户能够将设备插入到他们的电脑 将其显示在 我的电脑 中 并
  • 调用 didEnterBackground 后是否可以在主线程上执行某些操作?

    首先 如果您认为我的问题是虚拟的 我想说声抱歉 我是 iOS 和多线程的新手 只是想了解事情是如何发生的 据我所知didEnterBackground是 iOS 在应用程序挂起之前调用的最后一个函数 应用程序有大约 5 秒的时间从中返回 否
  • 用不均匀向量列表中的正值替换正表值

    背景 我最近问这个问题 https stackoverflow com questions 72899527 replacing a subset of table values with a list of vectors 然而 我使示例