Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File Julia-使用readdlm指定类型_File_Types_Io_Julia - Fatal编程技术网

File Julia-使用readdlm指定类型

File Julia-使用readdlm指定类型,file,types,io,julia,File,Types,Io,Julia,我有一个小数字的大文本文件,需要使用Julia导入。 一个玩具的例子是 七, 31 16 90253 我找到了readdlm。我走的时候 a=readdlm(“FileName.txt”) 它可以工作,但是生成的数组是任意类型的,并且生成的计算速度非常慢。 我尝试过将类型指定为int或具体指定为Int16,但失败 我如何正确地做到这一点? 另外,如果我使用readdlm,我是否必须关闭该文件。如果您指定类型,您的玩具示例将显示错误,因为其中缺少一些值。这些缺少的值在Julia中作为字符/字符串处

我有一个小数字的大文本文件,需要使用Julia导入。 一个玩具的例子是

七,

31 16

90253

我找到了readdlm。我走的时候 a=readdlm(“FileName.txt”) 它可以工作,但是生成的数组是任意类型的,并且生成的计算速度非常慢。 我尝试过将类型指定为int或具体指定为Int16,但失败

我如何正确地做到这一点?
另外,如果我使用readdlm,我是否必须关闭该文件。

如果您指定类型,您的玩具示例将显示错误,因为其中缺少一些值。这些缺少的值在Julia中作为字符/字符串处理,因此表的类型最终将是
Any
,因为
readdlm
无法确定这些值是否为数字/字符值。第1行只有1个值,而第2行有2个值,以此类推,这将为您提供缺少的值

如果文本文件中的所有数据都很清晰,您可以在
readdlm
中设置表的类型:

int_table = readdlm("FileName2.txt", Int16)
int_table
3x3 Array{Int16,2}:
  7   0   0
 31  16   0
 90   2  53
其中
FileName2.txt
是:

7   0   0
31  16  0
90  2   53
但是,如果数据缺少值,则需要将它们转换为一些数值,或者使用
DataFrames
包来处理它们。我在这里假设您想要一个纯整数数组,所以我用0填充值:

any_table = readdlm("FileName.txt")

any_table
3x3 Array{Any,2}:
  7    ""    ""
 31  16      ""
 90   2    53  

# fill missing values with 0
any_table[any_table .== ""] = 0

# convert to integer table
clean_array = Array{Int16}(any_table)

clean_array
3x3 Array{Int16,2}:
  7   0   0
 31  16   0
 90   2  53

Readdlm为您关闭文件,因此您不必担心。

您是否尝试过
Readdlm
的任何选项:
Readdlm(source,delim::Char,t::Type,eol::Char;header=false,skipstart=0,skipblanks=true,use_mmap,ignore_invalid_chars=false,quotes=true,dims,comments=true,comment_Char='.\35;)
。我在打电话,所以现在不能测试它们。最棒的是niczky12。洛格斯皮莱。如果你觉得这回答了你的问题,请随意将其标记为已接受。