2011-08-05 18 views
1

こんにちは、下記のコードを見つけてください。私がしたいのは、実行したい特定の条件チェックに基づいて配列に値を追加することです。値が適格である場合、配列に追加する必要があります。そうでない場合は、それらを破棄する必要があります。しかし、私は必要な配列を取得することができません。その点での助けには大きな助けとなるでしょう。入力配列R

>NODE_1 
[1]GTTGGCCGAGCCCCAGGACGCGTGGTTGTTGAACCAGATCAGGTCCGGGCTCCACTGCACGTAGTCCTCTTCCCAATTTCCCTTAA 

>NODE_2 
[1] CCTCCGGCGGCACCACGGTCGGCGAGGCCCTCAACATCCTG GAGCGCACCGACCTGTCCACCGCGGACAAGGCCGGTTACCT 
GCACCGCTACATCGAGGCCAGCCGCATCGCGTTCGCGGACC 

>NODE_3 
[1]GCCCGGCGCCTGGCCGCGGGCGAGTGGGTCGTGGACCTGCGCTCCCGGGTGGCCTTCGCCGCCGGTCACGTCGCCGGG 
    TCGCTCAACTTCGAGGCCGACGGACAGCT 

私のコードは次のとおりです。

Length <- function(a) 
{ 
    b<-list() 
    for (i in 1: length(a)) 
    { 
    b[i]<-which(length(a[i])<30, arr.ind = FALSE, useNames = TRUE) 
    m<- array(b[i]) 
    } 
} 
k<- Length(Y) 

は、だから私は何をしたいのか、その長さが30未満が

+0

この質問を再フォーマットする必要があります。「>」記号の1つが原因で、データがブロッククォートとして間違って表示されています。 – neilfws

+1

@Ankur:類似のデータについて少なくとも4つの疑問があります。あなたの構造が何であるかを事実上明確にしてはいけません。あなたは答えがあまりにもあいまいであったため、あなたは閉じられたというメッセージに耳を傾けませんでした。 dput()関数を使用してデータを投稿する必要があります。 "> NODE_1と入力すると、NODE_1、NODE_2、NODE_3という名前の単一のオブジェクトがあると思います。ループメソッドでは、このような無効なデータ配列を処理するためにget()を使用する必要があります。 –

+0

Bioconductorは使用できません。基本的なRでそれをする必要がありますが、私はあなたにとても感謝しています。@Ankur – sagar

答えて

1

あなたの代わりにnchar()を使用すべきであるYから配列bにのみデータを追加することですlength()を使用して文字数を取得します。

し、それをRの方法を行うために、あなたはブールインデックス使用することができます:k <- a[nchar(a)<30]

希望に役立ちます!