使用 Vector{Int64] 时没有方法匹配错误

No method matching error when working with Vector{Int64]

我有以下代码,首先我从两列中为每个索引添加值并创建 Vector{Int64}

df = CSV.read(joinpath("data", "data.csv"), DataFrame)
adding_columns = df.firstcolumn + df.secondcolumn

然后我将创建一个函数如下:

function fnct(data::Vector{T}; var= 8) where { T <: Number }
V = []
for x in 1:size(data)[1]
    strt = x-var
    ending = x+var
    avg = 0
    if strt < 1
        for y in 1:x+var
           avg  =  avg+data[y]
        end
        avg = avg/(x+var-1)
    elseif  ending >  size(data)[1]
        for y in x-var:size(data)[1]
           avg  =  avg+data[y]
        end
        avg = avg/(size(data)-x-var)
    else
        for y in x-var:x+var
           avg  =  avg+data[y]
        end 
        avg = avg/(2*var)
    end
    push!(V,avg)
    
end
return V

结束

尝试时:

typeof(adding_columns)

我会得到:

Vector{Int64}

但是当调用

fnct(adding_columns)

我会得到:

ERROR: MethodError: no method matching -(::Tuple{Int64}, ::Int64)

我假设它将我的 adding_columns 作为元组,但我不明白为什么,当 typeof 给我 Vector 时。

我该如何解决这个问题?

size(data) 是一个元组:

julia> size([1,2,3]::Vector{Int})
(3,)

...但是您在 avg = avg/(size(data)-x-var).

中减去一个整数

您是指 avg = avg/(length(data)-x-var) 还是 avg = avg/(size(data, 1)-x-var)