Skip to content
Back to skills

Fst

ASecurity

R fst package for fast serialization of data frames. Use for ultra-fast reading/writing of data frames with compression.

  • 5 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added June 4, 2026
dataperformance

Security analysis

A100/100

Scanned June 4, 2026

npx -y skills add LeoLin990405/r-analytics-skill --skill fst --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Fst?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Fst
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/leolin990405-fst/badge)](https://www.skillsdirectory.com/skills/leolin990405-fst)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: fst
description: R fst package for fast serialization of data frames. Use for ultra-fast reading/writing of data frames with compression.
---

# fst

Lightning fast serialization of data frames.

## Basic Usage

```r
library(fst)

# Write
write_fst(df, "data.fst")

# Read
df <- read_fst("data.fst")
```

## Compression

```r
# Compression levels (0-100)
write_fst(df, "data.fst", compress = 0)    # No compression, fastest
write_fst(df, "data.fst", compress = 50)   # Default, balanced
write_fst(df, "data.fst", compress = 100)  # Maximum compression

# Check compression ratio
fst.metadata("data.fst")
```

## Selective Reading

```r
# Read specific columns
df <- read_fst("data.fst", columns = c("id", "name", "value"))

# Read row range
df <- read_fst("data.fst", from = 1000, to = 2000)

# Combine both
df <- read_fst("data.fst",
  columns = c("id", "value"),
  from = 1, to = 10000
)
```

## Metadata

```r
# Get file metadata without reading
meta <- fst.metadata("data.fst")

# Number of rows
meta$nrOfRows

# Column names
meta$columnNames

# Column types
meta$columnTypes
```

## Data Types Supported

```r
# Supported types
# - integer, double, logical, character
# - factor (with levels preserved)
# - Date, POSIXct
# - raw (byte vectors)
# - IDate, ITime (data.table)

# Example with various types
df <- data.frame(
  int_col = 1:100,
  dbl_col = runif(100),
  chr_col = letters[1:100 %% 26 + 1],
  fct_col = factor(rep(c("A", "B"), 50)),
  date_col = Sys.Date() + 1:100,
  lgl_col = sample(c(TRUE, FALSE), 100, replace = TRUE)
)

write_fst(df, "typed_data.fst")
```

## Performance Tips

```r
# For maximum speed, use compress = 0
write_fst(df, "fast.fst", compress = 0)

# For minimum file size, use compress = 100
write_fst(df, "small.fst", compress = 100)

# Read only needed columns for large files
df <- read_fst("large.fst", columns = c("key_col"))

# Use row ranges for sampling
sample_df <- read_fst("large.fst", from = 1, to = 1000)
```

## Comparison with Other Formats

```r
# fst is typically:
# - 10-100x faster than CSV
# - 2-5x faster than RDS
# - Comparable to arrow/parquet for speed
# - Smaller files than RDS with compression

# Benchmark example
library(microbenchmark)
microbenchmark(
  fst = write_fst(df, "test.fst"),
  rds = saveRDS(df, "test.rds"),
  csv = write.csv(df, "test.csv"),
  times = 10
)
```

## Thread Control

```r
# Set number of threads
threads_fst(4)

# Get current thread count
threads_fst()
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.