2012-05-31 33 views
0

對不起,可能是一個完整的noob問題,但我今天剛剛開始用R編程,而且我已經被卡住了。在R中使用列表

我正在讀取格式爲文件的某些數據。

3.482373 8.0093238198371388 47.393873 
0.32 20.3131 31.313 

我想要做的是分割每一行然後處理每個單獨的數字。

我已導入stringr包,並使用

x = str_split(line, " ") 

這樣就產生了,我想指數,但不知道怎麼的列表。

我已經瞭解到x [[1:2]]獲得了第二個元素,但這是關於它的。理想情況下,我想要像

x1 = x[1] 
x2 = x[2] 
x3 = x[3] 

但無論如何找不到這樣做。

在此先感謝

+0

我會讀的幫助頁面通過鍵入得到什麼?解壓在控制檯,如果你剛剛開始。 – joran

+0

感謝您的回覆。我看了幫助(列表)和幫助(str_split),但仍然無法理解它。 – TrueWheel

+0

我的目的是要學習諸如'[[''只選擇一個元素,所以如果索引沒有太大的作用,就用它來處理這個事實。特別是,在列表中,'['和'[['有非常不同的行爲,這對理解很重要。 – joran

回答

1

你可以用你的電話到str_splitunlist得到你要尋找的行爲。

+0

謝謝,這工作完美。 – TrueWheel

1

通常的方法是將其導入數據框(一種特殊的列表)。如果文件名是「fil.dat」」,並在‘C:/ DIR /’

dfrm <- read.table("C:/dir/fil.dat") # resist the temptation to use backslashes 
dfrm[2,2] # would give you the second item on the second row. 

默認情況下,在R中的字段分隔符是‘白色空間’,這似乎是你所擁有的,所以您不需要提供sep=參數,read.table函數將嘗試導入爲數字。爲了安全起見,您可以考慮使用colClasses=rep("numeric", 3)強制該選項,因爲如果它遇到一個奇怪的項目(例如通常由Excel轉儲),你會得到一個因子變量,並可能不會理解如何優雅地恢復。

+0

感謝您的迴應和明確的解釋。現在我將考慮使用read.table。 – TrueWheel

2

通過使用unlist你將得到一個向量而不是向量列表,然後你將能夠直接索引它:

R> unlist(str_split("foo bar baz", " ")) 
[1] "foo" "bar" "baz" 

但也許你應該直接從read.table或其變體之一讀取你的文件?

如果你是有R開始,你真的應該閱讀可用,如果你想了解子集,索引引進一個,等

+0

感謝您的建議!我現在會看看讀表! – TrueWheel