read.opj {Ropj}R Documentation

Parse Origin(R) project file into a list of objects

Description

This function parses an OPJ file into a list of objects it consists of. Items understood by read.opj include spreadsheets, matrices, and notes.

Usage

  read.opj(file, encoding = 'latin1', tree = FALSE, ...)

Arguments

file

Path to the OPJ file to parse. Only file paths are supported, not R connections. Path is not expanded automatically.

encoding

Encoding of the strings inside the file being opened. This should correspond to the ANSI code page of Windows installation used to produce the file. The default of 'latin1' is usually safe to use. See iconvlist() for the full list of encodings supported by your R installation.

tree

Control the structure of the returned list. When FALSE (default), returned list is flat and its unique names correspond to the short names of the objects, while the comment attribute contains their long names and comments. When TRUE, the list itself becomes a recursive data structure containing the tree of the objects, making it possible to access objects by their paths in that tree.

...

The rest of the arguments is passed to as.data.frame when converting spreadsheets from lists of columns, making it possible to set stringsAsFactors and other parameters as needed.

Value

A named list containing objects stored in the file.

When tree = FALSE, the list is flat, its names are short names of the objects, and the comment attribute of the list contains the long names of the objects stored in the file.

When tree = TRUE, the list names are long names (if present; short otherwise) and the list itself represents the folder structure of the project.

Note

While Origin(R) and its scripting language seem to rely on the short names of the objects being unique across a project, neither long names nor folder names are guaranteed to avoid collisions. Tree-like lists returned by read.opj(..., tree = TRUE) might be easier to navigate interactively but present problems if someone gives multiple folders or objects the same long name.

Examples

  x <- read.opj(system.file('test.opj', package = 'Ropj'))
  head(x$Book2, 7)
  comment(x$Book2)
  attr(x$Book2, 'commands')
  with(x$Book1, head(Sheet2 - Sheet1))
  x$MBook1$MSheet1[1:4,1:4]
  x$Note1

  if ('CP1251' %in% iconvlist()) {
    # encoding names aren't guaranteed to be supported across all platforms
    x <- read.opj(system.file('test.opj', package = 'Ropj'), 'CP1251')
    print(x$cyrillic)
  }

  str(read.opj(system.file('tree.opj', package = 'Ropj'), tree = TRUE))

[Package Ropj version 0.3-5 Index]