2017-09-13 71 views
0

我有一個元數據文件存儲爲.tsv,我讀入R並保存爲META。我需要提取包含給定字符串「male」的所有行,這裏存儲在變量sample中。使用R提取包含變量字符串的所有行

完整的腳本有很多這些操作,所以重要的是我將模式存儲在下面的示例中。錯誤是我想要grep的方式。

IN <- "/home/zchadva/Scratch/output/cov" 

#metadata 
META <- read.table("/home/zchadva/Scratch/data/hipsci/rnaseq/hipsci.qc1_sample_info.20160926.tsv", header = TRUE, sep = "\t") 

#Set study/table variables 
sample <- "\\<male\\>" 
control <- "female" 

#Grep all rows containing "male" from the table META 
sample.list <- META[grep(sample, META, value=TRUE)] 

編輯:這讓我更接近

理想我不想使用META$Gender每次我需要做一個搜索模式爲我們真正的元數據文件是humungous指定coloumn。如果我需要指定,我想有Gender在一個變量

sample.list <- (META[grep(sample, META$Gender), ] 

例如:

**coloumn** <- Gender 
sample.list <- (META[grepl(sample, META$**coloumn**), ] 

#Table example simplified 
ID Disease Gender Cell 
JX1 ibd  male  liver 
PTY healthy male  liver 
HB3 ibd  female brain 
PO3 bbs  male  

#Desired layout in sample.list 
JX1 ibd  male  liver 
PTY healthy male  liver 
PO3 bbs  male  

任何幫助非常感謝。我試圖這樣做幾個小時

+0

那麼接近!給'META [grepl(sample,META $ Gender)]'試試。 – Benjamin

+0

我之前嘗試過,但它只返回我的第一行(標題)。但是在標題中的每個標籤被分離從該命令的輸出吐出它作爲: [1]名稱單元類型 [3] derived_from施主 [5] biosample_id tissue_biosample_id [7] donor_biosample_id derived_from_cell_type –

+0

使用上面它會的例子看起來像這樣:[1] ID [2]疾病[3]性別[4]細胞 –

回答

1

grepl會給你比grep更好的結果,因爲你可以使用邏輯向量來索引你的數據幀。

META <- 
    data.frame(ID = c("JX1", "PTY", "HB3", "PO3"), 
      Disease = c("ibd", "healthy", "ibd", "bbs"), 
      Gender = c("male", "male", "female", "male"), 
      Cell = c("liver", "liver", "brain", "liver")) 

sample <- "male" 
control <- "female" 

META[grepl("^male", META$Gender), ] 

    ID Disease Gender Cell 
1 JX1  ibd male liver 
2 PTY healthy male liver 
4 PO3  bbs male liver 
+0

非常感謝您的幫助,對不起,我是一個總R noob,只是想檢查這些東西: –

+0

非常感謝您的幫助,對不起,我是一個總R noob,只是想檢查這些東西: - 元數據表是巨大的,我需要使用data.frame(ID ...)snip你有嗎? - META [grepl(「^男性」,META $性別),]剛剛執行此命令,它仍然只給我我的標題行不包含「男性」 - 理想情況下在「META [grepl 「^男性」,META $性別),]「而不是寫男性,我希望它能徵求樣本。我將用不同的變量(如疾病,細胞等)再次運行腳本,如果我只需要更改1位文本 –

相關問題