zaro

How Do You Repeat a Value in Julia?

Published in Julia Value Repetition 3 mins read

In Julia, the most common and versatile way to repeat a value, be it a string, a character, a number, or an entire array, is by using the built-in repeat() function. This function offers flexible options to duplicate data according to specific needs.

1. Repeating Strings and Characters

For repeating strings or characters, Julia provides a straightforward syntax with repeat().

  • repeat(str, r): This syntax is used to return a string that is the repetition of a specified string or character a specified number of times.
    • str: The string or character to be repeated.
    • r: The number of times str should be repeated.

Examples:

# Repeating a string
repeat("Julia", 3)
# Output: "JuliaJuliaJulia"

# Repeating a character
repeat('A', 5)
# Output: "AAAAA"
  • String Multiplication Operator: For convenience, you can also use the multiplication operator (*) to repeat strings.
"Hello" * 2
# Output: "HelloHello"

'x' * 4
# Output: "xxxx"

2. Repeating Array Elements and Arrays

The repeat() function is particularly powerful when working with arrays, offering granular control over how elements or the entire array are duplicated.

2.1 Repeating a Single Scalar Value into an Array

To create an array filled with a single value repeated multiple times, the fill() function is the most idiomatic and efficient choice.

  • fill(value, dims...): Creates an array of the specified dimensions (dims) initialized with value.

Examples:

# Create a vector of 5 zeros
fill(0, 5)
# Output: 5-element Vector{Int64}: [0, 0, 0, 0, 0]

# Create a 2x3 matrix of true values
fill(true, 2, 3)
# Output: 2×3 Matrix{Bool}:
#  true  true  true
#  true  true  true

While repeat([value], n) can also achieve this, fill() is generally preferred for its clarity and performance when simply creating an array of identical scalar values.

2.2 Repeating an Entire Array (Outer Repetition)

To duplicate an entire array multiple times, concatenating the repetitions, you can use repeat() with the outer keyword or a simpler syntax for vectors.

  • repeat(A, n): For vectors A, this concatenates A n times.
  • repeat(A, outer=[rows, cols]): Repeats an array A rows times along its first dimension and cols times along its second dimension.

Examples:

# Repeat a vector 3 times
repeat([1, 2], 3)
# Output: 6-element Vector{Int64}: [1, 2, 1, 2, 1, 2]

# Repeat a 2x2 matrix 2 times in rows and 1 time in columns
M = [1 2; 3 4]
repeat(M, outer=[2, 1])
# Output: 4×2 Matrix{Int64}:
#  1  2
#  3  4
#  1  2
#  3  4

2.3 Repeating Each Element Within an Array (Inner Repetition)

To repeat each individual element of an array a specified number of times, use the inner keyword.

  • repeat(A, inner=[n_rows, n_cols]): Repeats each element of array A n_rows times in the first dimension and n_cols times in the second dimension.

Examples:

# Repeat each element of a vector 2 times
repeat([1, 2, 3], inner=[2])
# Output: 6-element Vector{Int64}: [1, 1, 2, 2, 3, 3]

# Repeat each element of a 2x2 matrix (e.g., once in rows, twice in columns)
M = [1 2; 3 4]
repeat(M, inner=[1, 2])
# Output: 2×4 Matrix{Int64}:
#  1  1  2  2
#  3  3  4  4

3. Summary of repeat() Usage

Here's a quick overview of repeat() for various data types:

Data Type Syntax Description Example
String/Char repeat(str, n) Repeats the string/character n times. repeat("abc", 2)"abcabc"
str * n Shorthand for string/character repetition. "abc" * 2"abcabc"
Scalar Value fill(value, dims...) Creates an array filled with value of specified dimensions. fill(7, 3)[7, 7, 7]
Array (Outer) repeat(A, n) Concatenates vector A n times. repeat([1, 2], 2)[1, 2, 1, 2]
repeat(A, outer=[rows, cols]) Repeats the entire array rows times vertically, cols times horizontally. repeat([1 2; 3 4], outer=[2, 1])
Array (Inner) repeat(A, inner=[rows, cols]) Repeats each element within array A rows times vertically, cols times horizontally. repeat([1 2], inner=[1, 3])[1 1 1 2 2 2]

For more detailed information on the repeat function and its capabilities, you can refer to the official Julia Documentation on Collections.