3

非常简单的操作。我有一个文件,其中包含一个由 N 行和 6 列组成的表,我想将它加载到我的 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等等。

我怎么能做到?谢谢

4

1 回答 1

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,它应该会生成一个具有您想要的结构的表。

于 2015-04-06T16:07:30.727 回答