我有一个如下所示的数据框:
chr alleles position
2 [A/T] 123456
3 [C/T] 5678910
8 [A/G] 8765435334
我想将每一行加载到变量中,例如:
library('BSgenome.Hsapiens.UCSC.hg19')
chr <- 'chr2'
alleles <- '[T/C]'
position <- 123456
offset <- 60
然后在迭代中使用它们:
seq <- paste(getSeq(Hsapiens,chr,position-offset,position-1),
+ alleles,
+ getSeq(Hsapiens,chr,position+1,position+offset),
+ sep='')
最后将输出作为另一个包含以下内容的数据帧:
chr allele position seq
2 [A/T] 123456 "ACTTGGAGATTTGGAGGAAGCTCCAGAGAGAGAGAGGCTTCCCAGCGTGGACTTGAAAGA[A/T]GAAACCAGCATAGATAGCACCGTGAATGGTGAGTTGGAATTCCTGGTTTCACTTTTGTTA"
我已阅读this thread,但感谢不需要索引的解决方案!
答案 0 :(得分:0)
我认为你应该使用purrr的map()
-type function。
我无法访问您的getSeq()
函数或Hsapiens
数据,但如果我能正确理解您的问题,这样的内容应该有效。
# define helper function to simply syntax and make code readable
seq_extractor <- function(data, chr, position, alleles, offset=60){
pre_seq <- getSeq(data, chr, position-offset, position-1)
post_seq <- getSeq(data, chr, position+1, position+offset)
paste(pre_seq, alleles, post_seq, sep='')
}
# use pmap_chr() to map your function onto your existing data
df %>%
mutate(seq = pmap_chr(list(chr, alleles, position),
~seq_extractor(Hsapiens, ..1, ..3, ..2))