Skip to content

Clone a LazyFrame

Source code

Description

This makes a very cheap deep copy/clone of an existing LazyFrame. Rarely useful as LazyFrames are nearly 100% immutable. Any modification of a LazyFrame should lead to a clone anyways, but this can be useful when dealing with attributes (see examples).

Usage

<LazyFrame>$clone()

Value

A LazyFrame

Examples

library(polars)

df1 = pl$LazyFrame(iris)

# Make a function to take a LazyFrame, add an attribute, and return a LazyFrame
give_attr = function(data) {
  attr(data, "created_on") = "2024-01-29"
  data
}
df2 = give_attr(df1)

# Problem: the original LazyFrame also gets the attribute while it shouldn't!
attributes(df1)
#> $class
#> [1] "RPolarsLazyFrame"
#> 
#> $created_on
#> [1] "2024-01-29"
# Use $clone() inside the function to avoid that
give_attr = function(data) {
  data = data$clone()
  attr(data, "created_on") = "2024-01-29"
  data
}
df1 = pl$LazyFrame(iris)
df2 = give_attr(df1)

# now, the original LazyFrame doesn't get this attribute
attributes(df1)
#> $class
#> [1] "RPolarsLazyFrame"