逐行乘以数据框

2023-12-02

输入文件:

df1 <- data.frame(row.names=c("w","x","y","z"), 
                  A=c(0,0,0,0),
                  B=c(0,1,0,0), 
                  C=c(1,0,1,0), 
                  D=c(1,1,1,1))

  A B C D
w 0 0 1 1
x 0 1 0 1
y 0 0 1 1
z 0 0 0 1

我想应用一个方程,即将行 w 乘以行 x 以获得 w-x 对的成对值,如下所示:

      A B C D
    w 0 0 1 1
X   x 0 1 0 1
--------------
   wx 0 0 0 1

获得 w-x、w-y、w-y、w-z、x-y、x-z、y-z 的逐行分析。并生成一个包含 6 列的新数据框(两行名称后跟相乘的值)。

That's

w x 0 0 0 1
w y 0 0 1 1
w z 0 0 0 1
x y 0 0 0 1
x z 0 0 0 1
y z 0 0 0 1

Thanks.


如果您不希望结果对象中出现组合名称,那么我们可以结合 @DWin 和 @Owen 的答案的元素,以提供真正的矢量化方法来解决问题。 (您可以将组合名称添加为行名称,并在末尾添加一个额外步骤。)

一、数据:

dat <- read.table(con <- textConnection("  A B C D
w 0 0 1 1
x 0 1 0 1
y 0 0 1 1
z 0 0 0 1
"), header=TRUE)
close(con)

采取combn()来自 @DWin's Answer 的想法,但将其用于行索引 of dat:

combs <- combn(seq_len(nrow(dat)), 2)

的行combs现在索引行dat我们想要相乘:

> combs
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    1    1    1    2    2    3
[2,]    2    3    4    3    4    4

现在我们采用@Owen 展示的想法,即dat[i, ] * dat[j, ] with i and j是第一行和第二行combs分别。我们将其转换为矩阵data.matrix()因为这对于大型对象来说会更有效,但是代码将适用于dat也作为数据框。

mat <- data.matrix(dat)
mat[combs[1,], ] * mat[combs[2,], ]

其产生:

> mat[combs[1,], ] * mat[combs[2,], ]
  A B C D
w 0 0 0 1
w 0 0 1 1
w 0 0 0 1
x 0 0 0 1
x 0 0 0 1
y 0 0 0 1

要了解这是如何工作的,请注意mat[combs[k,], ]生成一个矩阵,其中各行按组合指定的顺序重复:

> mat[combs[1,], ]
  A B C D
w 0 0 1 1
w 0 0 1 1
w 0 0 1 1
x 0 1 0 1
x 0 1 0 1
y 0 0 1 1
> mat[combs[2,], ]
  A B C D
x 0 1 0 1
y 0 0 1 1
z 0 0 0 1
y 0 0 1 1
z 0 0 0 1
z 0 0 0 1

为了准确获取OP发布的内容,我们可以使用第二个修改行名combn() call:

> out <- mat[combs[1,], ] * mat[combs[2,], ]
> rownames(out) <- apply(combn(rownames(dat), 2), 2, paste, collapse = "")
> out
   A B C D
wx 0 0 0 1
wy 0 0 1 1
wz 0 0 0 1
xy 0 0 0 1
xz 0 0 0 1
yz 0 0 0 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

逐行乘以数据框 的相关文章

  • R 中按时间划分的平均值

    我每秒测量一次化合物浓度 我想求 30 秒和 60 秒的平均值 我一直在阅读这里的帖子 我尝试过lubridate and dplyr 但没有运气 我正在努力完成这项工作 但我一直没能做到 我正在从 SAS 过渡到 R 所以请耐心等待 这是
  • R 将多个值与向量进行比较并返回向量[重复]

    这个问题在这里已经有答案了 我有一个向量 A 对于 A 的每个元素 我想检查它是否等于第二个向量 Targets 中的任何元素 我想要一个逻辑值向量 其长度为 A 作为返回 也提到了同样的问题here http r 789695 n4 na
  • 获取函数的命名空间

    我正在开发一个包 我希望在其中向对象添加编辑历史记录 该包允许其他包注册用于编辑对象的函数 我正在寻找一种方法来记录注册用于编辑的函数的包的版本 问题是 给定一个函数 如何从导出的位置获取包 我的想法是调查它的搜索路径 但是search 仅
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 将字符串列拆分为多个虚拟变量

    作为 R 中 data table 包的相对缺乏经验的用户 我一直在尝试将一个文本列处理为大量指示符列 虚拟变量 每列中的 1 表示特定的子字符串是在字符串列中找到 例如我想处理这个 ID String 1 a b 2 b c 3 c 进入
  • R中的重叠矩阵

    我有以下数据框 id channel 1 a 1 b 1 c 2 a 2 c 3 a 我想创建并重叠矩阵 它基本上是一个方阵 行和列标签为 a b c 表中的每个条目显示每个通道共有多少个 id 例如 在上面的例子中 矩阵看起来像 a b
  • 如何在 data.table 中分组后使用条件计算行数

    我有以下数据框 dat lt read csv s1 s2 v1 v2 a b 10 20 a b 22 NA a b 13 33 c d 3 NA c d 4 5 NA c d 10 20 dat gt A tibble 6 x 4 gt
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 如何在 Shiny 中提取动态生成的输入值?

    我正在创建一个闪亮的应用程序 它将根据客户的不同功能为客户生成分数 在我闪亮的应用程序中 我提供了 checkboxGroupInput 来选择所需的功能 根据所选功能 应用程序将动态地将 numericInput 添加到 Web ui 以
  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 为什么 sapply 的缩放速度比样本大小的 for 循环慢?

    假设我想采用向量 X 2 1 N 并将 e 计算为每个元 素的指数 是的 我认识到最好的方法就是通过向量化 exp X 但这样做的目的是将 for 循环与 sapply 进行比较 我通过逐步尝试三种方法 一种使用 for 循环 两种以不同方
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • R Shiny:如何将无功值从闪亮模块返回到主服务器功能?

    我有一个简单的玩具示例 它使用 add removeBtn 模块在 第一个 模块中添加和删除 UI 我需要跟踪单击 添加 删除 的次数 如果我不使用模块 这很容易 但我试图在嵌套模块的上下文中执行此操作 代码如下 但基本上 我似乎无法访问主
  • R - 重塑 - 熔化错误

    我正在尝试融化数据框 但出现了这个奇怪的错误 有什么想法吗 str zx7 data frame 519 obs of 5 variables calday new Date format 2011 01 03 2011 01 04 201
  • R,使用具有两种以上可能性的二项式分布

    我知道这可能是基本的 但我似乎有一个心理障碍 假设您想要计算在一个骰子上掷出 4 5 或 6 的概率 在 R 中 这很简单 sum 1 6 1 6 1 6 这给出了 1 2 这是正确答案 然而 我内心深处 可能应该保留的地方 认为我应该能够
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 当设置 coord_fixed 时,ggplot/shiny 中的鼠标悬停坐标是错误的

    我正在使用问题中的答案 当您将鼠标悬停在闪亮的 ggplot 上时出现工具提示 https stackoverflow com questions 27965931 tooltip when you mouseover a ggplot o
  • 需要在R中跳过不同数量的行

    我正在使用以下代码来处理我的数据 但最近我意识到使用skip 27 在数据开始之前跳过存储在我的文件中的信息 不是一个好的选择 因为每个文件中要跳过的行数不同我的目标是读取存储在多个文件夹中的各种txt文件 并非所有文件都有相同的列数 列的

随机推荐

  • ASP.NET MVC JSON 对象可以通过带有动态类型参数的参数传递给控制器​​吗?

    我的 javascript 中有代码 一个用于发布数据的 ajax ajax url Configurations GetSelectedPageTranslation type POST data inttype some val obj
  • Python:如何通过Python脚本执行jar文件

    我一直在寻找如何通过 python 执行 java jar 文件的答案 并在查看之后 从 Python 执行 jar 如何让我的 python 版本 2 5 脚本在文件夹内而不是从命令行运行 jar 文件 如何在不安装Python Egg文
  • 如何在 Solr 中突出显示包含 html 的字段中的查询术语

    我有一个正文字段 其中可能包含来自富文本编辑器的 html 文本 我希望能够从中返回突出显示的片段 但删除了 html 获取下面被索引的文本 p class something some text here with words and o
  • Magento:获取订单Id,监听事件checkout_onepage_controller_success_action

    当我看到这个事件的时候checkout onepage controller success action并且有效 但我无法获取新创建的订单的 ID 有人有什么想法吗 使用magento 1 4 1 0 Thanks 该事件的发送方式如下
  • 当集合使用不同的 X 坐标范围时,iOS 图表将不会绘制多个数据集

    当从多个数据集创建折线图时 折线图仅显示其中一个数据集 并且在缩放或平移图表时会崩溃致命错误 无法形成 upperBound 如果我从一个数据集创建折线图 它会按预期工作 仅当两个数据集具有完全不同的 X 值范围时 才会出现此问题 下面的代
  • iOS:给定一个圆导出点击点的角度

    我有一个 UIImageView 显示一个分为六个相等三角形的圆 对应于 区域 1 0 60 度之间 区域2 gt 60 120度之间 区域3 gt 120 180度之间 区域4 gt 180 240度之间 区域5 gt 240 300度之
  • 如何将值从react-native发送到android活动?

    我想将 rowId 从 React Native Listview 发送到我的 Android 活动中的方法之一 原因是我正在将 React 集成到现有的 Android 应用程序 所以暂时我想发送 rowID 进行进一步处理 对此有什么想
  • Visual Studio 未在解决方案资源管理器中显示提交的文件

    I have committed files in Visual Studio and pushed them to a repo on Github Now i pulled the repo but the committed file
  • 将 SQL 子查询转换为 In to Linq Lambda

    如何将以下 SQL 语句转换为 Lambda 表达式或 Linq 查询 以下查询获取每个问题的最新答案 或者换句话说 为每个问题提供最新的答案 这也将由实体框架执行 SELECT Answers FROM Answers Where Ans
  • git 除了子目录及其被忽略目录的文件

    我使用 git 来管理我的源 我在以下路径中有一些文件 Debug a dll Debug b exe Debug c png Debug Pic a png Debug Pic b bmp Debug Pic c dll 我想忽略这些文件
  • JavaScript 中的 + + 运算符

    当我有一个加号时 我会得到错误的答案 例如 var b 069 var total 0 total total b console log total total 069 然而 当我添加第二个加号时 方程看起来像这样 total total
  • ggplot轴标题中斜体和上标的表达

    我很抱歉问这个问题 但我似乎无法正确地将这个表达式包含在ylab or xlab ggplot2 对象的参数 需要读一下 2q 稀有 不过 2 需要加上上标 我摆弄过expression and paste 但这似乎是不可能的 任何帮助深表
  • IEnumerable 到 FileStreamResult 的流

    我有一个IEnumerable
  • 删除文件权限被拒绝

    我遇到了 Stack Overflow 上有很多条目的问题 但没有一个解决了我的问题 我有这段代码 它尝试删除文件夹中的每个 txt 但我在 DeleteFile 命令上不断收到权限被拒绝的错误 directory C TEST FOLDE
  • Moodle注册表编辑

    我使用的是moodle 2 8 1 我的疑问是关于 Moodle 注册表 我想添加一个确认密码字段 该字段与电子邮件 再次 字段相同 并删除电子邮件 再次 字段 而且它也没有显示电话号码 注册表单中的字段处于解锁状态时 如果要向注册表单添加
  • 接收POST时出现404错误

    我需要使用 php 将 json POST 从 android 发送到 Web 服务器 我尝试了很多代码但不起作用 现在我尝试使用 Postman 进行简单的 POST 无论是否发送数据 并且总是收到404错误 如果我使用 GET 发送数据
  • 为什么多个类选择器不能与removeClass一起使用

    如何在一个声明中使用多个类来完成这项工作 div class ddd back7 d div div class fff back7 f div div class ggg back7 g div ddd fff ggg removeCla
  • 返回重复字母最多的第一个单词

    这是 coderbyte 的 Easy Set 中的一个问题 很多人已经问过这个问题 但我真的很好奇我的特定解决方案出了什么问题 我知道这是一个非常愚蠢且低效的解决方案 原问题 让函数 LetterCountI str 接受传递的 str
  • 从多个接口继承的方法上的 List 返回类型中的 Java 泛型

    我目前在一家拥有多种模块的公司工作 在该公司中 如果您想提供模块内部结构 您可以通过 java 接口提供它 该接口隐藏实际的实现类型并为请求模块提供接口 现在我希望有一个提供程序能够为多个模块提供数据 这些模块公开实际内部数据的不同字段或方
  • 逐行乘以数据框

    输入文件 df1 lt data frame row names c w x y z A c 0 0 0 0 B c 0 1 0 0 C c 1 0 1 0 D c 1 1 1 1 A B C D w 0 0 1 1 x 0 1 0 1 y