2017-10-28 2 views
-1

この関数をどのように動作させるか考えてみましょうか?私はそれが "SeqはDNA、RNAに変換しています.."または "Seq is RNA"という列の20行を印刷し、空の列にgsubを適用しても機能しません。私が得るのは、最初の行の印刷であり、gsubは機能しません。 seq.mat無し関数がprintとgsubで機能しない

 `$DNA.RNA = function(check.string){ 
     grep = grepl("[^ACGT]",seq.mat[1:20,2]) 
     DNAorRNA = ifelse(grep == "FALSE", print("Seq is DNA, converting to 
     RNA.."), print("Seq is RNA")) 
     DNAorRNA = as.list(DNAorRNA) 
     seq.mat[,3] = gsub("T", "U", seq.mat[,2]) 
     }` 

[3]のコード行iの関数を実行すると、これはrstudioコンソールに印刷され

`$[1] "Seq is DNA, converting to RNA.." 
    [[1]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[2]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[3]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[4]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[5]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[6]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[7]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[8]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[9]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[10]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[11]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[12]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[13]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[14]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[15]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[16]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[17]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[18]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[19]] 
    [1] "Seq is DNA, converting to RNA.." 
    [[20]] 
    [1] "Seq is DNA, converting to RNA.." 
    ` 

私がしたかったseq.mat [3]ライン印刷された行がその特定の見積もりを表し、すべてのTをUで置き換える場合、データをある列から別の列に変換するために使用します。あなたが欲しい私が理解から

+4

小さな再現可能な例を示してください。 'grep'は関数であり、オブジェクト名としての関数の割り当ては良くありません。あなたの関数では、何も返されません。だから、あなたが 'gsub does not work 'と言うのは明らかではない。 – akrun

+1

この機能は混乱している。それは関数によって決して*使用されない引数を持っています、引数ではない(おそらく悪い考えである)オブジェクト 'seq.mat'を参照し、何も返しません。 「作業していない」とはどういう意味でも、それは控えめです。 –

+0

ありがとう、私はそれに気づいた。編集が何かを明確にするのに役立つのですか? – jclabrat

答えて

0

、:

  1. seq.mat[, 2]の要素の一部であるかどうかをチェックする'ACGT'
  2. その場合、RNAを変換したいDNAを扱っているのでしょうか?
  3. 次に、カラム3にseq.mathの有効RNA値を設定します。
  4. DNAエレメントのすべての文字'T''U'に置き換えて、DNAからRNAに変換しますか?

これはあなたの質問に基づいています。私はDNA、RNAまたはそのようなものについて何も知りません。

# Part 1: 
dna_check <- grepl("ACGT", seq.math[, 2]) 

# Part 2-3: 
seq.math[!dna_check, 3] <- seq.math[!dna_check, 2] 
seq.math[dna_check, 3] <- gsub("T", "U", seq.mat[dna_check, 2]) 

私の推測では、これは非常に迅速になり、メッセージを印刷すると処理が遅くなります。その間に何らかのメッセージを実際に印刷したい場合は、for -loopなどを使用して、すべての繰り返しの最後にメッセージを出力する必要があります。

あなたの質問に基づくサイドノート:あなたの質問には混乱、余計なこと、間違っていることがいくつかあります。私はあなたがそれらから学ぶことができるようにそれらを指摘するつもりだと思った。まず、check.stringを引数とする関数を定義しますが、関数内で使用することはありません。第2に、printコールをリストに保存しています。私が知る限り、それを行うには理由がありません。メッセージをリストに保存する場合は、引用符をmy_list <- ifelse(check, "message1", "message2")のようにしてください。第3に、Akrun氏がコメントで指摘したように、R関数と同じ名前のオブジェクトを定義するのは悪い考えです。また、DNAorRNAをリストに変換する理由は何ですか?最後に、自分の定義した関数でreturnステートメントを使うことをお勧めします。それ自体は必要ではありませんが、実行時に関数が実際に出力するものを整理するのに役立ちます。

関連する問題