【发布时间】:2017-08-23 00:11:19
【问题描述】:
最有效的计数方法是什么?一串分子式中的甲基化(CH2 的差异)。考虑在一串 100 个不同的分子式中,我有一些公式,如 C6H14O3 和 C5H12O3 和 C4H10O3。第一个和第二个由 CH2 不同,第二个和第三个由 CH2 不同,所以我在这个字符串中有 2 个甲基化。当字符串非常大时,这变得更加复杂。所以我想计算字符串中只有一个 CH2 的分子式有多少不同。
考虑一下我有:
DT<- data.frame(formula=c("C6H12O7S1","C6H10O8S1","C7H4O2N4","C8H12O5S1","C8H16O5S1","C8H12O3N2","C8H14O4S1","C9H7O3N1S1","C9H11O6N1S1","C9H9O6N1S1","C9H12O5S1","C9H18O5S1","C9H14O5","C9H20O5S1","C9H9O4N1S1","C9H9O5N1S1","C9H14O6","C10H11O5N1S1","C10H14O6","C10H16O6S1","C10H17O5N1","C10H20O7S1","C10H14O4","C10H12O7N2","C10H16O6","C10H14O6N2","C10H7O4N1S1","C10H18O6S1","C10H16O5","C10H13O6N1S1","C10H18O7S1","C11H18O6S1","C11H15O6N1","C11H22O7S1","C11H16O6S1","C11H16O6","C11H18O6"))
我想计算在这个字符串中有多少如上所述的 CH2 差异。
现在有没有一种简单的方法可以做到这一点,尤其是对于非常大的字符串?
非常感谢。
【问题讨论】:
-
您是在比较每个字符串与每个其他字符串还是仅比较第 1 到第 2、第 2 到第 3 等?
-
我没有在 R 中编程,但是使用环境创建哈希查找的正则表达式将每个公式拆分为其元素和数字可能是最简单的方法。
regmatches(regexpr("C\d+H\d+", your_var_here, perl=TRUE), your_var_here)之类的东西应该会给你CxHy组合 -
@thelatemail 我想将每个字符串与其他字符串进行比较。
-
你甚至可以以
strsplit(as.character(DT$formula[1:3]), "(?<=[0-9])(?=[A-Z])|(?<=[A-Z])(?=[0-9])", perl=TRUE)之类的方式作为起点,将所有数字和字符拆分为单独的块。 -
你的主干总是一样的,只是甲基化而不同,没有别的?例如,乙酰化是不可能的,对吧?