我对R非常陌生,很抱歉用这样一个简单的问题来打扰你。
我有一个大的数据框架(完整的数据框架有25列,几百万行),包含肽光谱库的信息(参见下面的示例)。
我正在通过将它们的缩写(UniMod:XXX)写入肽序列(PeptideSequence)来向基库中引入修改。我所剩下的就是根据我的修饰和电荷(PrecursorCharge)的发生来更新肽质量(PrecursorCharge)。因此,对于每个"(UniMod:259)“部分字符串,我必须将相应的质量增加8 (UniMod:267),除以电荷(电荷并不总是3,对不起)。例如,修改后的第一行应在对序列中的修改进行因子分解后读取714.64876。
PrecursorMz PeptideSequence PrecursorCharge 709.31543 AAAEK(UniMod:259)LFGNMEGDCPSDWK(UniMod:259) 3 709.31543 AAAEKLFGNMEGDCPSDWK(UniMod:259) 3 529.58044 AK(UniMod:259)LWCSTTADYDR(UniMod:267) 3
非常感谢,并将提供和补充您可能需要的信息。
发布于 2020-05-05 11:43:55
使用来自stringr::str_count的stringr (tidyverse的一部分)
library(tidyverse)
df %>%
map_if(is.factor, as.character) %>%
mutate(
PrecursorMz = PrecursorMz + (
8 * str_count(PeptideSequence, "UniMod:259") + 10 * str_count(PeptideSequence, "UniMod:267")
) / PrecursorCharge,
PrecursorMz = format(round(PrecursorMz, 5), nsmall = 5)
)
# A tibble: 3 x 3
PrecursorMz PeptideSequence PrecursorCharge
<chr> <chr> <dbl>
1 714.64876 AAAEK(UniMod:259)LFGNMEGDCPSDWK(UniMod:259) 3
2 711.98210 AAAEKLFGNMEGDCPSDWK(UniMod:259) 3
3 535.58044 AK(UniMod:259)LWCSTTADYDR(UniMod:267) 3https://stackoverflow.com/questions/61611955
复制相似问题