How to Use the sink() Function in R

Spread the love

In data analysis, it’s common to need to output results to a text file for record-keeping or further analysis. The sink function in R allows you to divert R output to a file, making it a crucial part of your toolkit. This comprehensive guide provides an in-depth look at how to use the sink function effectively.


The sink function in R is a built-in utility for redirecting output from the R console to a file. This output can include the results of your computations, the output of print statements, or the messages generated by your code. It’s a great way to keep a record of your work or to generate output that you can use in reports or other documents.

Basic Usage

The simplest way to use the sink function is to pass the name of the file where you want the output to be written as an argument:


Once you’ve called sink with a filename, all subsequent output that would usually appear in the R console will be written to the specified file instead.

To stop sending output to the file and return to normal console output, you call sink() without any arguments:


So a typical sequence might look like this:

# Start output to file

# Some computations
x <- rnorm(100)

# Stop output to file

In this example, the output of the summary function is written to “output.txt” rather than appearing in the console.

File Connections

Under the hood, sink works by setting up a “connection” to a file. When you call sink("output.txt"), R opens a connection to the file “output.txt”. All subsequent output is sent over this connection to the file.

When you call sink() without any arguments, R closes the current connection, and output returns to the console. If you want to divert output to a different file without returning to console output first, you need to close the current sink before opening a new one. This would look like this:

# Start output to first file
# ... do some stuff ...

# Switch to a different file
sink()  # Close first sink
sink("output2.txt")  # Open new sink
# ... do some more stuff ...

# Return to console output
sink()  # Close second sink

Controlling What Gets Sunk

By default, sink only redirects the output of computations and print statements. It doesn’t redirect messages, warnings, or errors. However, you can control this behavior using the type argument.

If you set type = "message", sink will redirect messages, warnings, and errors, but not the output of computations:

sink("messages.txt", type = "message")

In this mode, output from computations still appears in the console. You can have two sinks open at once, one for output and one for messages:

# Output sink

# Message sink
sink("messages.txt", type = "message")

# Some code that generates output and messages...
x <- rnorm(100)
message("This is a test message.")

# Close both sinks
sink(type = "message")  # Close message sink
sink()  # Close output sink

Use Cases

The sink function can be particularly useful in a number of situations. Here are a few examples:

  1. Logging: You can use sink to keep a log of your R session, which can be helpful for debugging or record-keeping.
  2. Reporting: sink can be used to generate output for reports or other documents. You can write a script that performs some analysis and outputs the results to a text file, which can then be included in a report.
  3. Error Tracking: By redirecting messages and errors to a file, you can keep a record of any problems that occur during an R session. This can be particularly useful when running long or complex scripts.

In conclusion, the sink function in R is a powerful tool for managing R’s output. Whether you’re keeping a log of your work, generating reports, or tracking errors, understanding how to use sink effectively can greatly enhance your workflow in R.

Posted in RTagged

Leave a Reply