2015-04-06 17 views
3

非常簡單的操作。我有一個包含N行和6列的表的文件,我想將它加載到我的Torch/Lua腳本的表格中。如何從Torch/Lua中的文件加載表格?

的數據文件看起來是這樣的:

chromNameA startA endA chromNameB startB endB 
chr22 16867980 16868130 chr22 16669675 16678717 
chr22 16867980 16868130 chr22 16685348 16701095 
chr22 16867980 16868130 chr22 16723869 16739035 
chr22 16867980 16868130 chr22 16748016 16750787 
chr22 16867980 16868130 chr22 16750788 16755877 

而且我想將其加載到一個表,其中例如table[1][2]包含16867980等。

我該怎麼辦?由於

回答

2

您可以使用string.match來分析各個行到表,並使用io.lines遍歷文件中的行:

-- script.lua 
local t, patt = {}, ("(%w+)%s+"):rep(5).."(%w+)" 
for line in io.lines() do 
    if not line:find("^chromNameA") then 
    table.insert(t, {line:match(patt)}) 
    end 
end 
print(#t, t[1][1], t[1][6]) -- prints `5 chr22 16678717` 

-- file.txt 
chromNameA startA endA chromNameB startB endB 
chr22 16867980 16868130 chr22 16669675 16678717 
chr22 16867980 16868130 chr22 16685348 16701095 
chr22 16867980 16868130 chr22 16723869 16739035 
chr22 16867980 16868130 chr22 16748016 16750787 
chr22 16867980 16868130 chr22 16750788 16755877 

-- execution: lua script.lua <file.txt 

然後就可以啓動腳本lua script.lua <file.txt,它應該產生一個表與你想要的結構。

+0

謝謝,但它不起作用。對於最後一行,錯誤日誌說:「嘗試索引一個零值'什麼是'io'? –

+0

我測試瞭解決方案,它在您發佈的數據文件上工作。我已經用文件的確切內容和要執行的命令更新了答案。你可以在循環中添加print(line:match(patt))'來查看究竟是什麼被讀取和解析的。 –