如何基于已知字符向量统计数据框中序列的字符数量
如何基于已知字符向量统计数据框中序列的字符数量?
嘿,我来帮你搞定这个字符统计的问题!先看你提供的这个包含蛋白质序列的数据框,咱们用tidyverse工具包就能轻松实现需求。
首先先还原你的数据框:
library(tidyverse) dat <- structure(list( fasta_header = "sp|A0A0A0MT76|LJ01_HUMAN", sequence = "PSRLLLQPSPQRADPRCWPRGFWSEPQSLCYVFGTGTKVTVL", type = "human", seq_len = 42L ), .Names = c( "fasta_header","sequence", "type", "seq_len"), row.names = c(NA, -1L), class = c("tbl_df","tbl", "data.frame"))
接下来分两种常见场景来处理,你可以根据自己的实际需求选择:
场景1:统计目标字符的总出现次数
假设你有一个已知的目标字符向量(比如c("P", "R", "L")),想要统计这些字符在序列里的总出现次数,可以用str_count()配合str_c()来实现:
# 定义你的目标字符向量,可按需修改 target_chars <- c("P", "R", "L") # 统计总次数并新增到数据框中 dat <- dat %>% mutate(total_target_chars = str_count(sequence, str_c(target_chars, collapse = "|"))) # 查看结果 dat
运行后数据框会新增一列total_target_chars,直接显示所有目标字符的总出现次数。
场景2:分别统计每个目标字符的出现次数
如果需要单独统计每个字符的出现次数,我们可以用map_dfc()遍历目标字符向量,为每个字符生成对应的统计列:
# 定义你的目标字符向量,可按需修改 target_chars <- c("P", "R", "L") # 为每个字符添加单独的统计列 dat <- dat %>% bind_cols( map_dfc(target_chars, ~ tibble(!!.x := str_count(sequence, .x))) ) # 查看结果 dat
这样操作后,数据框会新增P、R、L三列,分别对应每个字符在序列中的出现次数。
内容的提问来源于stack exchange,提问作者littleworth
相关产品推荐
相关产品推荐

