2016-05-05 7 views
1

です。リンクする必要があるファイルは2つあります。は、NA列を取り除くために列にラベルを付ける必要があります。番号は

> dim(sample.details) 
    [1] 656 18 
    > dim(E.rna) 
    [1] 47323 656 

私の仕事は、1つのファイルデータフレームの列名に、もう一方の列の値をラベル付けすることです。

ptr <- match(colnames(E.rna), sample.details$my_category_2) 
sample.details <- sample.details[ptr,] # reorder to correspond to rows of E.RNA 
rownames(E.rna)<-outcome 

私の問題は、今では私がE.rnaの列に正しくラベルを付けたことです。私は 'NA'の値を取り除く必要があります。以下のコマンドは、列のrelabellingのみ「NA.1、NA.2、NA.3としてNA値を持つ列を再ラベル付けしているので、これがある

E.rna_conditions_cleaned<-subset(E.rna, !is.na(colnames(E.rna))) 

...残念ながら動作しません... "だから私はそれらを" na.omit "で取り除くことはできません。

enter image description here

私は何とか連続NA列を取り除くために正規表現を使用することができますか...?次のように私の考えは次のようになります。

subset(df, any df column name that does not == 'NA' followed by a 1-3 digit number) 

私は正規表現に慣れていないです...任意のヒント?

+1

小さな再現可能な例と予想される出力を表示できますか? 'df [!grepl("^NA \\。\\ d + "、names(df))]' 'サブセット'では列を選択するために 'select'を使わなければなりません。ベクター。 – akrun

+0

こんにちはAkrunそうですか? "E.rna_conditions_cleaned <-subset(E.rna、!is.na(colnames(erna))、select = df [!grep("^NA \\。\\ d + " 、名前(df))]) "? ご質問ありがとうございました –

+0

ありがとうございましたAkrun私は "E.rna_conditions_cleaned <-E.rna_conditions_cleaned <!= –

答えて

2

これは、列名に(.)は、1つ以上の数字(\\d+)が続くドット続いNAと一致するパターンでgreplを用いて行う論理出力を無効と列のサブセットにそれを使用することができます。

E.rna_conditions_cleaned<-E.rna_conditions_cleaned[!grepl("^NA\\.\\d+", 
      names(E.rna_conditions_cleaned))] 
0

私は、あなたが次の正規表現を探していると思う:

# build sample df 
E.rna <- data.frame(U.95=1:5, HC.54=letters[6:10], NA.5=rnorm(5), KD.77=runif(5)) 

# get rid of unwanted variables 
E.rna_conditions_cleaned <- E.rna[, grep("^NA", names(E.rna), invert=TRUE)] 

grep機能は、パターンに一致する変数のインデックスを見つける「^ NA」(名前はNAで始まる)= TRUEが補数をとる反転これらのインデックス(パターンに一致しないインデックス)

関連する問題