2010-06-02 52 views
1

熱圖選擇列,我再次需要你的幫助:)爲R中

我寫的R腳本,產生熱圖出一個給定的選項卡分隔的TXT或XLS文件。目前,我在xls文件中手動刪除熱圖中不想包含的所有列。 現在我想使自動化,但我不知道該怎麼:(

有趣的列都開始在所有的xls文件相同的,其次是個人的名字:

XLS文件1:L1_tpm_xxxx L2_tpm_xxxx L3_tpm_xxxx

XLS文件2:L1_tpm_xxxx L2_tpm_xxxx L3_tpm_xxxx L4_tpm_xxxx L5_tpm_xxxx

任何想法如何選擇這些列

感謝你在期待,在菲利普

+1

你可以看看http://stackoverflow.com/questions/1402634/choose-variables-based-on-name-simple-regular-expression或http://stackoverflow.com/questions/2125231/subsetting-in-r -using-or-condition-with-strings – Marek 2010-06-02 15:35:17

+0

謝謝你的鏈接! – Philipp 2010-06-02 19:34:16

回答

2

你可以使用(如果你已經在data.frame df讀取數據):

df <- df[,grep("^L[[:digit:]]+_tpm.*",colnames(df))] 

,或者你可以明確寫入所需的列:

df <- df[,c("L1_tpm_xxxx","L2_tpm_xxxx","L3_tpm_xxxx")] 

等。 。

以下link是非常有用的;-)

+0

您的代碼對於名爲「L10_tpm_abcd」的列不會成功。我會建議「^ L [0-9] + _ tpm」 – 2010-06-02 16:02:22

+0

首先感謝您的幫助! 我使用read.table作爲txt文件,但是從excel文件的「gdata」包中讀取xls。還沒有時間來測試它,但這是否也適用於read.xls? – Philipp 2010-06-02 19:36:10

+0

gd047:感謝您的評論,代碼相應改變。 Philipp:我想'read.xls'正在讀取data.frame中的數據,所以它應該也能正常工作。 – teucer 2010-06-03 06:55:25

0

如果您認爲列位置將在Excel表格中修復,這裏最簡單的解決方案就是使用列索引。例如,如果使用read.table將製表符分隔的文本文件導入爲data.frame,然後決定只保留前兩列,則可以這樣做:

data <- read.table("path_to_file.txt", header=T, sep="\t") 
data <- data[,1:2] 
+0

該死的,這本來是很容易的;-) 不幸的是,他們並不總是有相同的指數^^ 但無論如何感謝! – Philipp 2010-06-02 19:32:37