我正在尝试使用Integer
和Vector{Integer}
子集值的组合在Julia中对Vector{String}
进行子集化。我想编写一个函数,基本上允许的"asdf"[1:3]
与三个参数x[y:z]
的子集是任何载体或单身。在Julia中使用向量来处理字符串向量中的元素
这是我迄今为止尝试:
function substring(x::Array{String}, y::Integer, z::Integer)
y = fill(y, length(x))
z = fill(z, length(x))
substring(x, y, z)
end
function substring(x::Vector{String}, y::Vector{Integer}, z::Integer)
y = fill(y, length(x))
substring(x, y, z)
end
function substring(x::Vector{String}, y::Integer, z::Vector{Integer})
z = fill(z, length(x))
substring(x, y, z)
end
function substring(x::Vector{String}, y::Vector{Integer}, z::Vector{Integer})
for i = 1:length(x)
x[i] = x[i][y[i]:min(z[i], length(x[i]))]
# If z[i] is greater than the length of x[i]
# return the end of the string
end
x
end
尝试使用它:
v = string.('a':'z')
x = rand(v, 100) .* rand(v, 100) .* rand(v, 100)
substring(x, 1, 2)
# or
substring(x, 1, s)
我得到的错误:
MethodError: no method matching substring(::Array{String,1}, ::Int64, ::Array{Int64,1})
Closest candidates are:
substring(::Array{String,N}, ::Integer, !Matched::Integer) at untitled-e3b9271a972031e628a35deeeb23c4a8:2
substring(::Array{String,1}, ::Integer, !Matched::Array{Integer,1}) at untitled-e3b9271a972031e628a35deeeb23c4a8:13
substring(::Array{String,N}, ::Integer, !Matched::Array{Integer,N}) at untitled-e3b9271a972031e628a35deeeb23c4a8:13
...
in include_string(::String, ::String, ::Int64) at eval.jl:28
in include_string(::Module, ::String, ::String, ::Int64, ::Vararg{Int64,N}) at eval.jl:32
in (::Atom.##53#56{String,Int64,String})() at eval.jl:50
in withpath(::Atom.##53#56{String,Int64,String}, ::Void) at utils.jl:30
in withpath(::Function, ::String) at eval.jl:38
in macro expansion at eval.jl:49 [inlined]
in (::Atom.##52#55{Dict{String,Any}})() at task.jl:60
我看到有另一个post addressing与Vector{String}
类似的错误。我的帖子还回应了与Vector{Integer}
相关的错误。我相信对它的回应可能有助于像我这样的人发现抽象类型的实现新颖和困难。
的可能的复制[向量{AbstractString}函数参数将不接受在朱向量{字符串}输入](http://stackoverflow.com/questions/21465838/vectorabstractstring-function-parameter-wont-accept-vectorstring- input-in-j) –
这是一个参数不变性的例子。见http://stackoverflow.com/questions/21465838/vectorabstractstring-function-parameter-wont-accept-vectorstring-input-in-j对于s类似的问题;这里你的问题在'Vector {Integer}'中。 –
我想指出,虽然我的问题已被解释为类型管理问题。我真的只是在寻找一个符合标题所说的功能。在我更习惯的R中,答案是微不足道的,'substr(x,1,2)'。我列出了上面的代码,以表明我已经做出了合理的努力来自己解决这个问题。如果没有太多的麻烦,我会非常感谢答案。 – fsmart