在Julia中使用带有DataFrames.jl的writetable()时输出不带引号的字符串?

Ian*_*all 5 dataframe julia

使用writetable将DataFrame中的字符串写入文件的默认设置是它们被引号括起来:

using DataFrames
df = DataFrame(letters=["A","B","C"],numbers=[1,2,3])
writetable("df_file", df, separator='\t')
Run Code Online (Sandbox Code Playgroud)

生成以下文件:

"letters"   "numbers"
"A" 1
"B" 2
"C" 3
Run Code Online (Sandbox Code Playgroud)

可以选择更改引号字符:

writetable("df_file", df, separator='\t', quotemark='.')

.letters.   .numbers.
.A. 1
.B. 2
.C. 3
Run Code Online (Sandbox Code Playgroud)

但如果没有指定字符,这不起作用

writetable("df_file", df, separator='\t', quotemark='')
ERROR: syntax: invalid character literal
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何编写没有任何引号字符的字符串?这将是我需要的输出:

letters numbers
A   1
B   2
C   3
Run Code Online (Sandbox Code Playgroud)

我目前正在使用Julia版本0.4.1,DataFrames软件包版本0.6.10.

Mic*_*gge 4

根据GitHub 的讨论,DataFrames 包的创建者不信任具有这种控制其输出的权力的用户。

我个人的建议是转换为Array然后使用 Julia 的writedlm(),它相信用户知道他们想要写入文件的内容:

writedlm(FileName, convert(Array,df), '\t')
Run Code Online (Sandbox Code Playgroud)

要包含标题,您可以使用如下内容:

open(FileName, "w") do f
    writedlm(f, names(df)', '\t')
    writedlm(f, convert(Array,df), '\t')
end
Run Code Online (Sandbox Code Playgroud)

另请参阅具有类似答案的相关问题:Is there a way to use strings as seperators in writetable() - Julia