Skip to content

Assign and Print

Visruth Srimath Kandali
Feb 23, 20252 min read

just stumbled upon this neat little R pattern which I found really nice/helpful. I was assigning and evaluating some expressions, but I also wanted to see what values I was getting. Toy example:

1
set.seed(0)
2
x <- runif(10)
3
x
4
#> [1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 0.8983897
5
#> [8] 0.9446753 0.6607978 0.6291140
6
xbar <- mean(x)
7
xbar
8
#> [1] 0.635005

I was working in a script, so I was just mashing Ctr + Enter a few times to run the above snippet. Obviously in a notebook such a command could be condensed to just the chord for Run Cell, but my point will stand.

You can rewrite the above like this:

1
set.seed(0)
2
x <- runif(10)
3
print(x)
4
#> [1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 0.8983897
5
#> [8] 0.9446753 0.6607978 0.6291140
6
xbar <- mean(x)
7
print(xbar)
8
#> [1] 0.635005

but this is unnecessary since evaluating x will print it. I was thinking about this when I remembered that print returns invisibly⁠. This allows you to condense above to just:

1
set.seed(0)
2
x <- runif(10) |> print()
3
#> [1] 0.8966972 0.2655087 0.3721239 0.5728534 0.9082078 0.2016819 0.8983897
4
#> [8] 0.9446753 0.6607978 0.6291140
5
xbar <- mean(x) |> print()
6
#> [1] 0.635005

I think this looks a lot nicer.

I popped it into a small snippet as well, just for kicks.

1
{
2
"Evaluate and Print": {
3
"prefix": "eprint",
4
"body": "|> print()",
5
"description": "Piped input gets printed and returned invisibly; useful for printing an expression and assigning it."
6
}
7
}

All R snippets above created on 2025-02-23 with reprex v2.1.1⁠

Did you enjoy this article?

Recommend it — Standard Reader surfaces well-loved writing to more readers across the network.

Across the AtmosphereDiscussions