| Title: | Functions for Working with 'Eprime' Text Files | 
| Version: | 0.1.3 | 
| Description: | 'Eprime' is a set of programs for administering psychological experiments by computer. This package provides functions for loading, parsing, filtering and exporting data in the text files produced by 'Eprime' experiments. | 
| License: | GPL-2 | 
| URL: | https://github.com/tjmahr/rprime | 
| BugReports: | https://github.com/tjmahr/rprime/issues | 
| Depends: | R (≥ 3.0.1) | 
| Imports: | assertthat, plyr, stringi, stringr (≥ 1.0.0), tools, utils | 
| Suggests: | knitr, readr, rmarkdown, testthat | 
| VignetteBuilder: | knitr | 
| Encoding: | UTF-8 | 
| RoxygenNote: | 7.3.2 | 
| NeedsCompilation: | no | 
| Packaged: | 2025-04-25 19:53:36 UTC; Tristan | 
| Author: | Tristan Mahr | 
| Maintainer: | Tristan Mahr <tristan.mahr@wisc.edu> | 
| Repository: | CRAN | 
| Date/Publication: | 2025-04-25 20:10:02 UTC | 
Functions for dealing with Eprime txt files
Description
'Eprime' is a set of programs for administering psychological experiments by computer. This package provides functions for loading, parsing, filtering and exporting data in the text files produced by 'Eprime' experiments.
Author(s)
Maintainer: Tristan Mahr tristan.mahr@wisc.edu (ORCID)
See Also
Useful links:
Create an EprimeFrame object
Description
This constructor function converts a character vector into an
EprimeFrame object, which is just a list with some special metadata
values. Strings with the format "key: value" are parsed into key
= value list items (via listify).
Usage
EprimeFrame(keys_values)
Arguments
| keys_values | a character vector of containing some  | 
Value
a list with the class EprimeFrame and with special
Eprime. metadata, Running and Procedure values, all
set to NA by default.
Examples
# Default metadata values
lines <- c(
  "key: value",
  "question: answer",
  "garbage text")
EprimeFrame(lines)
# List of 8
# $ Eprime.Level      : num 1
# $ Eprime.LevelName  : logi NA
# $ Eprime.Basename   : logi NA
# $ Eprime.FrameNumber: logi NA
# $ Procedure         : logi NA
# $ Running           : logi NA
# $ key               : chr "value"
# $ question          : chr "answer"
# Normalize [Running] related lines
keys_values <- c(
  "Running: Demo",
  "Demo: ExampleCode",
  "Demo.Cycle: 1",
  "Demo.Sample: 1",
  "Key: Value")
EprimeFrame(keys_values)
# List of 9
# $ Eprime.Level      : num 1
# $ Eprime.LevelName  : chr "Demo_ExampleCode"
# $ Eprime.Basename   : logi NA
# $ Eprime.FrameNumber: logi NA
# $ Procedure         : logi NA
# $ Running           : chr "Demo"
# $ Cycle             : chr "1"
# $ Sample            : chr "1"
# $ Key               : chr "Value"
Convert lines from an Eprime file into EprimeFrame objects
Description
Convert character vectors of implicit key-value pairs (e.g., c("key1:
value1", "key2: value2")), into  lists of explicit key-value pairs,
list(key1 = "value1", key2 = "value2").
Usage
FrameList(x)
Arguments
| x | a character vector with lines of the form  | 
Details
During the conversion, if Running: x, then the
x.Sample and x.Cycle lines are simplified into Sample
and Cycle lines. The x: value line is recoded as
Eprime.LevelName: x_value. The purpose of this tidying is to force
the same set of key names (eventually, column names) onto frames with
different values for "Running".
Value
When passed a list of character vectors of "key: value" lines,
a FrameList object (a list of EprimeFrames) is returned. when passed a
single vector vector of "key: value" lines, a single EprimeFrame
object is returned inside of a FrameList object.
Examples
lines <- c("\t*** LogFrame Start ***",
           "\tProcedure: FamTask",
           "\titem1: bear",
           "\titem2: chair",
           "\tCorrectResponse: bear",
           "\tImageSide: Left",
           "\tDuration: 885",
           "\tFamiliarization: 1",
           "\tFamInforcer: 1",
           "\tReinforcerImage: Bicycle1",
           "\tFamiliarization.Cycle: 1",
           "\tFamiliarization.Sample: 1",
           "\tRunning: Familiarization",
           "\tFamTarget.RESP: ",
           "\tCorrect: True",
           "\t*** LogFrame End ***")
# List of 1
# $ :List of 17
# ..$ Eprime.Level      : num 2
# ..$ Eprime.LevelName  : chr "Familiarization_1"
# ..$ Eprime.Basename   : chr "NA"
# ..$ Eprime.FrameNumber: chr "1"
# ..$ Procedure         : chr "FamTask"
# ..$ Running           : chr "Familiarization"
# ..$ item1             : chr "bear"
# ..$ item2             : chr "chair"
# ..$ CorrectResponse   : chr "bear"
# ..$ ImageSide         : chr "Left"
# ..$ Duration          : chr "885"
# ..$ FamInforcer       : chr "1"
# ..$ ReinforcerImage   : chr "Bicycle1"
# ..$ Cycle             : chr "1"
# ..$ Sample            : chr "1"
# ..$ FamTarget.RESP    : chr ""
# ..$ Correct           : chr "True"
# ..- attr(*, "class")= chr [1:2] "EprimeFrame" "list"
# - attr(*, "class")= chr [1:2] "list" "FrameList"
Convert a list into an EprimeFrame object
Description
Convert a list into an EprimeFrame object
Usage
as.EprimeFrame(xs)
Arguments
| xs | a list | 
Value
the original list as an EprimeFrame object (along with dummy
Eprime metadata fields)
Convert a list of EprimeFrames into a FrameList object
Description
Convert a list of EprimeFrames into a FrameList object
Usage
as.FrameList(xs)
Arguments
| xs | a list of EprimeFrames | 
Value
the original list as a FrameList object
Extract log-frames from an Eprime log file
Description
Almost all of the information in an Eprime file comes in chunks of text
bracketed by the lines *** LogFrame Start *** and *** LogFrame
End ***. The exception is the header information which is bracketed by
*** Header Start *** and *** Header End ***.
Usage
extract_chunks(eprime_log)
Arguments
| eprime_log | a character vector containing the lines of text from Eprime txt file | 
Details
extract_chunks extracts the bracketed text, storing each log-frame of
text in a list. The lists also include some additional lines of text as
metadata: Eprime.FrameNumber and Eprime.Basename (the name of
the source file). The header log-frame also gets dummy lines:
Procedure: Header and Running: Header.
These character vectors of colon-separated lines are converted into proper
lists by FrameList(...).
Value
a list of character vectors, where each vector contains the lines of a log-frame
Filter levels in or out of a FrameList based on attribute values
Description
Filter levels in or out of a FrameList based on attribute values
Usage
filter_in(frame_list, key, values)
filter_out(frame_list, key, values)
Arguments
| frame_list | a list of  | 
| key | the name of the attribute to filter in or out | 
| values | the whitelisted or blacklisted values of the attribute | 
Value
for filter_in, only log-frames where key is one of the
values are kept. for filter_out, log-frames where key
is one of the values are omitted.
Filter levels in or out of a FrameList based on Eprime.Level values
Description
These functions are shortcuts for calls to filter_in or
filter_out.
Usage
keep_levels(frame_list, level_numbers)
drop_levels(frame_list, level_numbers)
Arguments
| frame_list | a list of  | 
| level_numbers | the whitelisted or blacklisted values for Eprime.Level | 
Details
Note that the meaning of Eprime.Level value in a log-frame ultimately is equal to one plus the number of tabs before each line in the log-frame.
Value
for keep_levels, only log-frames where the level matches one
of the level_numbers are kept. for keep_levels, log-frames
where the level matches one of the level_numbers are omitted.
Higher-order functions for dealing with lists
Description
These functions were inspired by underscore.js.
Usage
pluck(key)
pluck_apply(key, xss)
pick(keys)
pick_apply(keys, xss)
Arguments
| key | the name of a value in a list | 
| xss | a list of lists | 
| keys | a character vector of names in a list | 
Details
-  pluck: Pluck a named value from a list
- 
pick: Simplify a list by picking out whitelisted names
The simple versions of pluck and pick are curried functions,
meaning that they return a function which can be applied to a list. See the
syntax in the usage section.
Value
pluck returns an unnamed value and pluck_apply returns
a list of unnamed values. pick returns a simplified version of the
original list. pick_apply returns a list of simplified lists.
Convert a vector of colon-separated text lines into a list of named elements
Description
Convert a vector of colon-separated text lines into a list of named elements
Usage
listify(colon_sep_xs)
Arguments
| colon_sep_xs | a character vector with lines of the form
 | 
Details
Some minor cleaning of the input is performed:
- Lines without a colon-space separator - ": "are filtered out.
- Once the strings are split at the separator, white-space on the left and right sides of each half-string is omitted. 
Value
a named list of the values in the colon-separated lines.
"key: value" yields list(key = "value")
Preview the levels in a parsed Eprime file
Description
Preview the levels in a parsed Eprime file
Usage
preview_eprime(frame_list)
preview_levels(frame_list)
preview_frames(frame_list)
Arguments
| frame_list | a FrameList (a list of EprimeFrames) | 
Details
preview_levels prints out the unique combinations of
Eprime.Level number, Procedure, and Running in the frame list.
preview_frames prints out example frame from each of the unique
levels. preview_eprime does both.
Value
Nothing. Preview text is printed to the console.
Read in a text file generated by Eprime
Description
Read in a text file generated by Eprime
Usage
read_eprime(filename, remove_clock = TRUE)
Arguments
| filename | Either the full or relative path to an Eprime .txt file | 
| remove_clock | Whether to exclude the Clock.Information XML entries. Enabled by default. | 
Details
The encoding on an Eprime txt file should be UCS-2 Little Endian,
but sometimes this is not the case. We delegate the fussy encoding details
to the stringi::str_read_lines function.
If the file is not an Eprime txt–that is, if it is missing the lines
*** Header Start *** and *** Header End ***–a warning is
raised and the lines of text are replaced by a dummy header.
Value
Each line of the file is stored and returned in a character vector.
Convert Eprime Frames into data-frames
Description
Convert Eprime Frames into data-frames
Usage
to_data_frame(x)
Arguments
| x | an EprimeFrame object, or a FrameList object (a list of EprimeFrames) | 
Details
Individual EprimeFrames are converted to a data-frame using
as.data.frame(). (Strings are not converted to factors.)
Each of the individual data-frames are then rbind()-ed together, with
missing columns being filled with NA.
Value
all of the EprimeFrames combined into a single data frame.