2013-03-15 36 views
-4

我有一個文本文件,它看起來像下面從字符串獲取值的列標題中的R

DateTime    height0.1    height0.2 
2009-01-01 00:00   1      1 
2009-01-02 00:00   2      4 
2009-01-03 00:00   10     1 

顯然,這只是一個例子,實際的文件中包含了更多的數據,即包含約100列,並且標題可以具有小數點的值。我可以通過以下方式將文件讀入R:

dat <- read.table(file,header = TRUE, sep = "\t") 

其中file是表的路徑。這會在名爲dat的工作區中創建一個data.frame。現在我想從這個data.frame中生成一個名爲'vars'的變量,它是由列標題中的數字組成的數組(除了來自第一列的DateTime外)。

例如,這裏我會瓦爾= 1,2

基本上我想採取是標題的字符串中的數,然後存儲此在一個單獨的變量。我意識到這對某些人來說非常容易,但任何建議都會很棒。

+3

是否這樣? 'my_var < - as.numeric(gsub(「[^ 0-9]」,「」,names(dat)[2:3]))' – Arun 2013-03-15 12:00:11

+0

@Arun爲什麼不作爲回答? – 2013-03-15 12:01:27

+1

@ SimonO101,在這些問題中,總有一個「catch」。看到我的答案評論。 – Arun 2013-03-15 12:09:07

回答

2

如果所有的號碼,你一直都在名字的結尾,例如,不喜歡h984mm19,那麼,你可以刪除一切,除了使用gsub數字和標點符號並將其轉換爲numeric矢量如下:

# just give all names except the first column 
my_var <- as.numeric(gsub("[^0-9[:punct:]]", "", names(dat)[-1])) 
# [1] 0.1 0.2 
+0

如果數字是0.1和0.2,我認爲這不會起作用。而且如果數據框中有多於3列的話。你能提供一個更通用的答案嗎? – Emma 2013-03-15 12:06:57

+0

好吧,你的問題沒有提及任何關於'0.1'的問題。編輯您的帖子以反映可能性,然後我將進行編輯。 – Arun 2013-03-15 12:08:21

+0

@ user1155751這就是爲什麼給你的問題的具體要求是一個好主意...... – alexwhan 2013-03-15 12:08:29