Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 字符串中的字符位置_String_R_Perl - Fatal编程技术网

String 字符串中的字符位置

String 字符串中的字符位置,string,r,perl,String,R,Perl,我有一个数据帧,在列1中有字符串,在列2中有ID。字符串包含A、T、G或C。 我想打印位置1处有A的行。 然后我想打印位置2处有A的行,依此类推,并将它们保存在单独的文件中。 到目前为止,我已经使用R中的biostrings进行了类似的分析,但它不能完全解决这个问题。我想使用perl Sequence ID TATACAAGGGCAAGCTCTCTGT mmu-miR-381-3p TCGGATCCGTCTGAGCT mmu-miR-127-3p AT

我有一个数据帧,在
列1
中有字符串,在
列2
中有ID。字符串包含
A、T、G或C
。 我想打印位置1处有
A
的行。 然后我想打印位置2处有
A
的行,依此类推,并将它们保存在单独的文件中。 到目前为止,我已经使用R中的biostrings进行了类似的分析,但它不能完全解决这个问题。我想使用perl

Sequence                ID
TATACAAGGGCAAGCTCTCTGT  mmu-miR-381-3p
TCGGATCCGTCTGAGCT       mmu-miR-127-3p
ATAGTAGACCGTATAGCGTACG  mmu-miR-411-5p
......
600 more lines

生物管柱将完美地工作,并且速度相当快。让我们调用您的DNA stringset
mydata

HasA <- sapply(mydata,function(x) as.character(x[2]) == "A")

HasA不确定预期结果

 mydata <- read.table(text="Sequence                ID
 TATACAAGGGCAAGCTCTCTGT  mmu-miR-381-3p
 TCGGATCCGTCTGAGCT       mmu-miR-127-3p
 ATAGTAGACCGTATAGCGTACG  mmu-miR-411-5p",sep="",header=T,stringsAsFactors=F)

  mCh <- max(nchar(mydata[,1])) #gives the maximum number of characters in the first column

 sapply(seq(mCh), function(i) substr(mydata[,1],i,i)=="A") #gives the index
使用索引
提取行。第一名

 mydata[res$values[res$ind==1],]
  #               Sequence             ID
# 3 ATAGTAGACCGTATAGCGTACG mmu-miR-411-5p
使用perl单行程序

perl -Mautodie -lane '
  BEGIN {($f) = @ARGV}
  next if $. == 1;
  my @c = split //, $F[0];
  for my $i (grep {$c[$_] eq "A"} (0..$#c)) {
    open my $fh, ">>", "$f.$i";
    print $fh $_;
  }
' file

第一次运行是
data[,1][order(子字符串(data[,1],1,1))]
。所以你应该能够遍历每个字符串的字母谢谢,我来试试,如何从原始的输入矩阵中打印出每个位置都为真的行?
 mydata[res$values[res$ind==1],]
  #               Sequence             ID
# 3 ATAGTAGACCGTATAGCGTACG mmu-miR-411-5p
perl -Mautodie -lane '
  BEGIN {($f) = @ARGV}
  next if $. == 1;
  my @c = split //, $F[0];
  for my $i (grep {$c[$_] eq "A"} (0..$#c)) {
    open my $fh, ">>", "$f.$i";
    print $fh $_;
  }
' file