使用 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)
?
我有以下代码,首先我从两列中为每个索引添加值并创建 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)
?