我有一个包含100个氨基酸(AA)的蛋白质序列,可以作为data.framework处理.每个AA都有一个职位,目前最重要的是职位:

Protein <- data.frame(AA = 1:100)

然后我有一个数据.框架,其中包含来自蛋白质(消化/序列分解后)的肽,以及与蛋白质相关的AA的初始和最终位置:

df <- data.frame(
Peptides = c("Peptide_A", "Peptide_B", "Peptide_C", "Peptide_D"), 
Initial.AA = c(1, 23, 59, 77), 
Final.AA = c(18, 58, 70, 100)
)

Output:

   Peptides Initial.AA Final.AA
1 Peptide_A          1       18
2 Peptide_B         23       58
3 Peptide_C         59       70
4 Peptide_D         77      100

判断DF时,很明显一些AA未映射(19:22和71:76,共有10个未映射AA).

我希望输出total percentual of mapped AA,在本例中是90% (90 mapped AA from all the peptides / 100 protein AA).

一如既往地欢迎所有答案,但最好是整洁的答案.

推荐答案

使用setdiffbase R方法

(1 - length(setdiff(
       Protein$AA, 
       unlist(apply(df[,2:3], 1, \(x) 
                seq(x["Initial.AA"], x["Final.AA"]))))) / nrow(Protein)) * 100
[1] 90

一个更明智的 Select 可能是

library(dplyr)

df %>% 
  rowwise() %>% 
  reframe(AA = seq(Initial.AA, Final.AA)) %>% 
  summarize(total_mapped_AA = (1 - length(setdiff(Protein$AA, AA)) / 
    nrow(Protein)) * 100)
# A tibble: 1 × 1
  total_mapped_AA
            <dbl>
1              90

R相关问答推荐

如何使用geom_sf在边界显示两种 colored颜色 ?

如何 bootstrap glm回归、估计95%置信区间并绘制它?

R:更新后无法运行控制台

有没有一种方法可以从函数中创建一个值的列表,然后将这些值变成R中的直方图?我一直觉得不行

从R导出全局环境中的所有sf(numrames)对象

非线性混合效应模型(NLME)预测变量的置信区间

使用较长的查询提取具有部分匹配的列表中的较短目标,

矩阵的堆叠条形图,条形图上有数字作为标签

从多个线性回归模型中提取系数

如何将Which()函数用于管道%>;%

R:如果为NA,则根据条件,使用列名模式将缺少的值替换为另一列中的值

停止ggplot将多行减少到一行

使用geom_iles在一个切片中包含多个值

在R中使用列表(作为tibble列)进行向量化?

有没有办法一次粘贴所有列

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

将多个列合并为一个列的有效方法是什么?

将列表中的字符串粘贴到R中for循环内的dplyr筛选器中

是否可以将线性模型的p值添加到tbl_summary中

Ggplot2:添加更多特定 colored颜色 的线条