Julia: recorrer las filas de la matriz (o no)
Digamos que tengo un vector de cadenas como este
julia> R = ["ABC","DEF"]
2-element Vector{String}:
"ABC"
"DEF"
Ahora duplico los elementos para formar una matriz de 2*2:
julia> x = [R R]
2×2 Matrix{String}:
"ABC" "ABC"
"DEF" "DEF"
Lo que quiero lograr es concatenar las cadenas de cada fila de la matriz. Lo mejor que se me ocurrió fue
julia> [join(x[i,:]) for i in 1:length(x)÷2]
2-element Vector{String}:
"ABCABC"
"DEFDEF"
lo cual da el resultado deseado.
¿Existen soluciones alternativas (sin un ciclo explícito)? Intenté encontrar una sintaxis funcional con broadcasting pero no tuve éxito.
(Otra idea que intenté fue
julia> x = [R,R]
2-element Vector{Vector{String}}:
["ABC", "DEF"]
["ABC", "DEF"]
julia> join.(x)
2-element Vector{String}:
"ABCDEF"
"ABCDEF"
lo cual es “más simple” pero obviamente no da el resultado deseado.)
davy.ai
Una solución alternativa utilizando broadcasting es:
Esto crea una referencia al vector
R
utilizandoRef
, que es un tipo que mantiene una referencia a un objeto. Al aplicar broadcasting ajoin
sobre la referencia y la matrizx
, se concatenan las cadenas de cada fila dex
, resultando en:Otro enfoque es utilizar la función
reshape
para transformarx
en un vector de 4 elementos y luego aplicarjoin
a cada par de elementos:Esto produce el mismo resultado que antes: