gpt4 book ai didi

r - 从 r 矩阵的每一行中减去不同的向量

转载 作者:行者123 更新时间:2023-12-02 07:52:51 25 4
gpt4 key购买 nike

我正在使用 R。这些是我的数据:

  • Prot_before:一个有 70000 行的矩阵,每行有两列:组(有 700 个组)和每个样本的值(有 120 个 sample )。

  • Prot_healthy:一个 30000 行的矩阵,每行有两列:组(有 700 组)和每个样本的值(有 45 sample )。

对于 prot_before 中的每一行,我想找到它的值减去 prot_healthy 中该组中所有样本的值。

例如:

set.seed(100) 
Prot_before <- data.frame(cat = c(rep("aaa", 5), rep("bbb", 5), rep("ccc", 5)), val = runif(15))
Prot_before <- df[order(df$cat, df$val), ]
Prot_before
set.seed(100) 
Prot_after <- data.frame(cat = c(rep("aaa", 5), rep("bbb", 5), rep("ccc", 5)), val = runif(15))
Prot_after <- df[order(df$cat, df$val), ]
Prot_after

现在我想要 prot_before 中每一行的结果,减去 prot_after 中同一组 aaa 等中的所有样本。因此,对于 prot_before 中的每一行,我得到 45 个结果。我尝试使用扫描,但不知道如何按组对所有样本重复该功能。

如果写得不对,我很抱歉,我经验不足。谢谢!

最佳答案

一种选择是将每个数据集按“cat”拆分放入一个列表中,然后使用outer对所有数据集进行减法使用 Map

对应 list 元素的组合行
Map(outer, MoreArgs = list(FUN = `-`), 
split(Prot_before$val, Prot_before$cat), split(Prot_after$val, Prot_after$cat))

或者使用sapplyMap

Map(function(x, y) sapply(x, `-`, y),  
split(Prot_before$val, Prot_before$cat), split(Prot_after$val, Prot_after$cat))

关于r - 从 r 矩阵的每一行中减去不同的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59099045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com