zu unterteilen Ich bin versucht, eine Vector{String}
in Julia unter Verwendung einer Kombination Integer
und Vector{Integer}
Subset-Werte zu unterteilen. Ich möchte eine Funktion schreiben, die grundsätzlich eine Teilmenge von "asdf"[1:3]
mit jedem der drei Argumente x[y:z]
zu entweder Vektoren oder Singletons erlaubt.Verwenden eines Vektors, um Elemente innerhalb eines Zeichenfolgevektors in Julia
Das ist, was ich bisher versucht haben:
es zu benutzenfunction 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
Versuch:
v = string.('a':'z')
x = rand(v, 100) .* rand(v, 100) .* rand(v, 100)
substring(x, 1, 2)
# or
substring(x, 1, s)
ich den Fehler:
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
Ich sehe, dass es eine andere ist post addressing ein ähnlicher Fehler mit dem Typ Vector{String}
. Mein Beitrag fragt auch eine Antwort auf den Fehler Vector{Integer}
. Ich glaube, die Antworten darauf könnten für andere wie mich hilfreich sein, die die Implementierung abstrakter Typen als neu und schwierig empfinden.
Mögliches Duplikat des [Vector {AbstractString} -Funktionsparameters akzeptiert keine Eingabe von Vector {String} in Julia] (http://stackoverflow.com/questions/21465838/vectorabstractstring-function-parameter-wont-accept-vectorstring-) Eingabe-in-j) –
Dies ist ein Beispiel für parametrische Invarianz. Siehe http://stackoverflow.com/questions/21465838/vectorabstractstring-function-parameter-wont-accept-vectorstring-input-in-j für s ähnliches Problem; Hier liegt Ihr Problem in 'Vector {Integer}'. –
Ich möchte darauf hinweisen, dass meine Frage als Typ-Management-Problem interpretiert wurde. Ich suche wirklich nur nach einer Funktion, die das tut, was der Titel sagt. In R, für das ich mehr gewöhnt bin, ist die Antwort trivial, substr (x, 1,2).Ich habe den obigen Code hinzugefügt, um zu zeigen, dass ich mich selbst um eine angemessene Lösung bemüht habe. Und wenn es nicht zu viel Mühe wäre, würde ich eine Antwort sehr schätzen. – fsmart