2017-06-12 63 views
1
using DataFrames 
label = ["Data", "tempo", "RAh", "RAm", "RAs", "DEh", "DEm", "DEs"] 
df = readtable("mars.dat", separator = ' ',header = false, names = label) 

我得到下一個錯誤如何在julia中傳遞可讀取函數的列名?

MethodError: no method matching DataFrames.ParseOptions(::Bool, ::Char, ::Array{Char,1}, ::Char, ::Array{String,1}, ::Array{String,1}, ::Array{String,1}, ::Bool, ::Array{String,1}, ::Array{Any,1}, ::Bool, ::Char, ::Bool, ::Int64, ::Array{Int64,1}, ::Bool, ::Symbol, ::Bool, ::Bool) 
Closest candidates are: 
    DataFrames.ParseOptions(::Bool, ::Char, ::Array{Char,1}, ::Char, ::Array{S<:String,1}, ::Array{T<:String,1}, ::Array{T<:String,1}, ::Bool, ::Array{Symbol,1}, ::Array{T,1} where T, ::Bool, ::Char, ::Bool, ::Int64, ::AbstractArray{Int64,1}, ::Bool, ::Symbol, ::Bool, ::Bool) where {S<:String, T<:String} at /home/juser/.julia/v0.6/DataFrames/src/dataframe/io.jl:9 

Stacktrace: 
[1] #readtable#84(::Bool, ::Char, ::Array{Char,1}, ::Char, ::Array{String,1}, ::Array{String,1}, ::Array{String,1}, ::Bool, ::Int64, ::Array{String,1}, ::Array{Any,1}, ::Bool, ::Char, ::Bool, ::Int64, ::Array{Int64,1}, ::Bool, ::Symbol, ::Bool, ::Bool, ::DataFrames.#readtable, ::IOStream, ::Int64) at /home/juser/.julia/v0.6/DataFrames/src/dataframe/io.jl:843 
[2] (::DataFrames.#kw##readtable)(::Array{Any,1}, ::DataFrames.#readtable, ::IOStream, ::Int64) at ./<missing>:0 
[3] #readtable#85(::Bool, ::Char, ::Array{Char,1}, ::Char, ::Array{String,1}, ::Array{String,1}, ::Array{String,1}, ::Bool, ::Int64, ::Array{String,1}, ::Array{Any,1}, ::Bool, ::Char, ::Bool, ::Int64, ::Array{Int64,1}, ::Bool, ::Symbol, ::Bool, ::Bool, ::DataFrames.#readtable, ::String) at /home/juser/.julia/v0.6/DataFrames/src/dataframe/io.jl:945 
[4] (::DataFrames.#kw##readtable)(::Array{Any,1}, ::DataFrames.#readtable, ::String) at ./<missing>:0 

回答

1

從readtable的文檔,似乎它預計符號的載體,而不是字符串的向量:

名:: vector的十符號} - 使用此數組中的值作爲所有列的名稱,而不是或代替文件頭中的名稱。

您可以使用列表理解將字符串向量轉換爲符號向量(假設您的字符串是有效的名稱),例如,

labelSymbols = [Symbol(i) for i in label]; 

並將其傳遞給您的名稱參數。


聲明:我沒有測試,看看這個工程,我沒有訪問mars.dat文件。我只是閱讀文檔並指出最可能的問題。

+0

謝謝! Tasos Papastylianou,這對我有用。 – Fredifqh

+0

對不起,在這裏做一個令人討厭的評論,但是格式'labelSymbols = Symbol。(label)'在Julia中沒有更多的意識形態? –

+1

@ MichaelK.Borregaard哈,好點。我認爲廣播語法本身並不比列表理解語法本身更習慣,但在我的腦海中,我認爲這在語義上是「從每個字符串元素生成一個符號」而不是「按元素應用符號構造器」 ;我甚至沒有把這看作是一個開始的廣播行動:p –

相關問題