Data Input from Spreadsheet

Reads a file in Data Interchange Format (DIF) and creates a data frame from it. DIF is a format for data matrices such as single spreadsheets.

file, connection
read.DIF(file, header = FALSE,
         dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
         row.names, col.names, = !stringsAsFactors,
         na.strings = "NA", colClasses = NA, nrows = -1,
         skip = 0, check.names = TRUE, blank.lines.skip = TRUE,
         stringsAsFactors = default.stringsAsFactors(),
         transpose = FALSE, fileEncoding = "")
the name of the file which the data are to be read from, or a connection, or a complete URL.

The name "clipboard" may also be used on Windows, in which case read.DIF("clipboard") will look for a DIF format entry in the Windows clipboard.

a logical value indicating whether the spreadsheet contains the names of the variables as its first line. If missing, the value is determined from the file format: header is set to TRUE if and only if the first row contains only character values and the top left cell is empty.
the character used in the file for decimal points.
string indicating how to convert numbers whose conversion to double precision would lose accuracy, see type.convert.
a vector of row names. This can be a vector giving the actual row names, or a single number giving the column of the table which contains the row names, or character string giving the name of the table column containing the row names.

If there is a header and the first row contains one fewer field than the number of columns, the first column in the input is used for the row names. Otherwise if row.names is missing, the rows are numbered.

Using row.names = NULL forces row numbering.

a vector of optional names for the variables. The default is to use "V" followed by the column number.
the default behavior of read.DIF is to convert character variables to factors. The variable controls the conversion of columns not otherwise specified by colClasses. Its value is either a vector of logicals (values are recycled if necessary), or a vector of numeric or character indices which specify which columns should not be converted to factors.

Note: In releases prior to R


  • A data frame (data.frame) containing a representation of the data in the file. Empty input is an error unless col.names is specified, when a 0-row data frame is returned: similarly giving just a header line if header = TRUE results in a 0-row data frame.


The columns referred to in and colClasses include the column of row names (if any).

Less memory will be used if colClasses is specified as one of the six atomic vector classes.


  • na.strings
  • colClasses
  • nrows
  • skip
  • check.names
  • blank.lines.skip
  • stringsAsFactors
  • transpose
  • fileEncoding






  • Encoding
  • R Data Import/Export Manual
  • Note


The DIF format specification can be found by searching on; the optional header fields are ignored. See also

The term is likely to lead to confusion: Windows will have a Windows Data Interchange Format (DIF) data format as part of its WinFX system, which may or may not be compatible.

See Also

The R Data Import/Export manual.

scan, type.convert, read.fwf for reading fixed width formatted input; read.table; data.frame.

  • read.DIF
library(utils) ## read.DIF() may need transpose = TRUE for a file exported from Excel udir <- system.file("misc", package = "utils") dd <- read.DIF(file.path(udir, "exDIF.dif"), header = TRUE, transpose = TRUE) dc <- read.csv(file.path(udir, "exDIF.csv"), header = TRUE) stopifnot(identical(dd, dc), dim(dd) == c(4,2))
Documentation reproduced from package utils, version 3.3, License: Part of R 3.3

Community examples

Looks like there are no examples yet.