mirror of
https://github.com/agdamsbo/prioritized.grouping.git
synced 2025-09-12 02:29:40 +02:00
major update and first official launch. CRAN is waiting.
Some checks are pending
pkgdown.yaml / pkgdown (push) Waiting to run
Some checks are pending
pkgdown.yaml / pkgdown (push) Waiting to run
This commit is contained in:
parent
464b842629
commit
3b035ab06f
218 changed files with 1761 additions and 410526 deletions
|
@ -3,3 +3,10 @@
|
|||
^LICENSE\.md$
|
||||
^.*\.Rproj$
|
||||
^\.Rproj\.user$
|
||||
^CODE_OF_CONDUCT\.md$
|
||||
^app/
|
||||
^publish_shiny.R
|
||||
^_pkgdown\.yml$
|
||||
^docs$
|
||||
^pkgdown$
|
||||
^\.github$
|
||||
|
|
1
.github/.gitignore
vendored
Normal file
1
.github/.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
*.html
|
50
.github/workflows/pkgdown.yaml
vendored
Normal file
50
.github/workflows/pkgdown.yaml
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
|
||||
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
|
||||
on:
|
||||
push:
|
||||
branches: [main, master]
|
||||
pull_request:
|
||||
branches: [main, master]
|
||||
release:
|
||||
types: [published]
|
||||
workflow_dispatch:
|
||||
|
||||
name: pkgdown.yaml
|
||||
|
||||
permissions: read-all
|
||||
|
||||
jobs:
|
||||
pkgdown:
|
||||
runs-on: ubuntu-latest
|
||||
# Only restrict concurrency for non-PR jobs
|
||||
concurrency:
|
||||
group: pkgdown-${{ github.event_name != 'pull_request' || github.run_id }}
|
||||
env:
|
||||
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
|
||||
permissions:
|
||||
contents: write
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: r-lib/actions/setup-pandoc@v2
|
||||
|
||||
- uses: r-lib/actions/setup-r@v2
|
||||
with:
|
||||
use-public-rspm: true
|
||||
|
||||
- uses: r-lib/actions/setup-r-dependencies@v2
|
||||
with:
|
||||
extra-packages: any::pkgdown, local::.
|
||||
needs: website
|
||||
|
||||
- name: Build site
|
||||
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE)
|
||||
shell: Rscript {0}
|
||||
|
||||
- name: Deploy to GitHub pages 🚀
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: JamesIves/github-pages-deploy-action@v4.5.0
|
||||
with:
|
||||
clean: false
|
||||
branch: gh-pages
|
||||
folder: docs
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,3 +4,4 @@
|
|||
.httr-oauth
|
||||
.DS_Store
|
||||
.quarto
|
||||
docs
|
||||
|
|
126
CODE_OF_CONDUCT.md
Normal file
126
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,126 @@
|
|||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, caste, color, religion, or sexual
|
||||
identity and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the overall
|
||||
community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or advances of
|
||||
any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email address,
|
||||
without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at andreas@gdamsbo.dk.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series of
|
||||
actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or permanent
|
||||
ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within the
|
||||
community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.1, available at
|
||||
<https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
|
||||
|
||||
Community Impact Guidelines were inspired by
|
||||
[Mozilla's code of conduct enforcement ladder][https://github.com/mozilla/inclusion].
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
<https://www.contributor-covenant.org/faq>. Translations are available at <https://www.contributor-covenant.org/translations>.
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
27
DESCRIPTION
27
DESCRIPTION
|
@ -1,10 +1,14 @@
|
|||
Package: prioritized-group-assignment
|
||||
Title: Group assignments based on participant prioritization
|
||||
Version: 24.1.1
|
||||
Package: prioritized.grouping
|
||||
Title: Group allocation based on individual subject prioritization
|
||||
Version: 24.10.1
|
||||
Authors@R:
|
||||
person("Andreas Gammelgaard", "Damsbo", , "agdamsbo@clin.au.dk", role = c("aut", "cre"),
|
||||
person("Andreas Gammelgaard", "Damsbo", , "andreas@gdamsbo.dk", role = c("aut", "cre"),
|
||||
comment = c(ORCID = "0000-0002-7559-1154"))
|
||||
Description: Supply group
|
||||
Description:
|
||||
Apply algorithmic grouping based on individual pritisations/costs, with the
|
||||
option to allow for the so-called "pedagogical redraw", where some subjects
|
||||
are manually grouped in consideration of other factors than only the
|
||||
given priorities before the algorithmic grouping.
|
||||
License: GPL (>= 3)
|
||||
Imports:
|
||||
dplyr,
|
||||
|
@ -23,12 +27,17 @@ Imports:
|
|||
shinylive,
|
||||
httpuv,
|
||||
here,
|
||||
shiny,
|
||||
cpp11,
|
||||
ROI.plugin.alabama
|
||||
ROI.plugin.alabama,
|
||||
assertthat,
|
||||
readODS
|
||||
Suggests:
|
||||
pak,
|
||||
usethis
|
||||
usethis,
|
||||
styler,
|
||||
roxygen2,
|
||||
devtools
|
||||
Encoding: UTF-8
|
||||
Roxygen: list(markdown = TRUE)
|
||||
RoxygenNote: 7.0.0
|
||||
RoxygenNote: 7.3.2
|
||||
URL: https://agdamsbo.github.io/prioritized.grouping/
|
||||
|
|
6
NAMESPACE
Normal file
6
NAMESPACE
Normal file
|
@ -0,0 +1,6 @@
|
|||
# Generated by roxygen2: do not edit by hand
|
||||
|
||||
S3method(plot,prioritized_groups_list)
|
||||
export(file_extension)
|
||||
export(grouping_plot)
|
||||
export(prioritized_grouping)
|
22
NEWS.md
Normal file
22
NEWS.md
Normal file
|
@ -0,0 +1,22 @@
|
|||
## Version 24.10.1
|
||||
|
||||
First proper public version. The package is mainly build for an easy to use
|
||||
shiny-interface, but can as easily be used directly in *R* with the main
|
||||
`prioritized_grouping` function. This function is mainly a wrapper around the `ROI`
|
||||
package and the `ROI.plugin.symphony` plugin.
|
||||
|
||||
File types accepted in the shiny-app are .csv, .xls(x) and .ods.
|
||||
|
||||
This project was initially developed after a co-worker told me, he would be
|
||||
grouping students by individual priorities by hand and was preparing to spend
|
||||
most of a day doing so. I insisted on having a go at solving that problem in
|
||||
*R*. Now some of the some functionality is baked into Teams (that is what I am
|
||||
told at least), though that is not because of me. I still think is small app has
|
||||
its value, as it allows for the so-called "pedagogical redraw", where some
|
||||
students are manually grouped in consideration of other factors than only the
|
||||
given priorities before the algorithmic assignment.
|
||||
|
||||
This, as said, is a first official version and working example.
|
||||
More documentation is needed and will be added after further feedback. And
|
||||
please, feedback is most welcome!
|
||||
|
197
R/group_assign.R
197
R/group_assign.R
|
@ -1,197 +0,0 @@
|
|||
#' Solve group assignment based on
|
||||
#'
|
||||
#' @param ds data set
|
||||
#' @param cap_classes class capacity. Numeric vector length 1 or length=number
|
||||
#' of groups. If NULL equal group sizes are calculated. Default is NULL.
|
||||
#' @param excess_space allowed excess group fill. Default is 1.2.
|
||||
#' @param pre_assign Pre assigned data set. Optional.
|
||||
#' @param set_solver choose the desired solver (originally "symphony").
|
||||
#'
|
||||
#' @return
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
#' read.csv(here::here("data/assign_sample.csv")) |> group_assignment()
|
||||
group_assignment <-
|
||||
function(ds,
|
||||
cap_classes = NULL,
|
||||
excess_space = 1.2,
|
||||
pre_assign = NULL,
|
||||
set_solver="symphony") {
|
||||
require(ROI)
|
||||
require(ROI.plugin.symphony)
|
||||
|
||||
if (!is.data.frame(ds)){
|
||||
stop("Supplied data has to be a data frame, with each row
|
||||
are subjects and columns are groups, with the first column being
|
||||
subject identifiers")}
|
||||
|
||||
## This program very much trust the user to supply correctly formatted data
|
||||
cost <- t(ds[,-1]) #Transpose converts to matrix
|
||||
colnames(cost) <- ds[,1]
|
||||
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
|
||||
## Adding the option to introduce a bit of head room to the classes by
|
||||
## the groups to a little bigger than the smallest possible
|
||||
## Default is to allow for an extra 20 % fill
|
||||
excess <- excess_space
|
||||
|
||||
# generous round up of capacities
|
||||
if (is.null(cap_classes)) {
|
||||
capacity <- rep(ceiling(excess*num_sub/num_groups), num_groups)
|
||||
# } else if (!is.numeric(cap_classes)) {
|
||||
# stop("cap_classes has to be numeric")
|
||||
} else if (length(cap_classes)==1){
|
||||
capacity <- ceiling(rep(cap_classes,num_groups)*excess)
|
||||
} else if (length(cap_classes)==num_groups){
|
||||
capacity <- ceiling(cap_classes*excess)
|
||||
} else {
|
||||
stop("cap_classes has to be either length 1 or same as number of groups")
|
||||
}
|
||||
|
||||
## This test should be a little more elegant
|
||||
## pre_assign should be a data.frame or matrix with an ID and assignment column
|
||||
with_pre_assign <- FALSE
|
||||
if (!is.null(pre_assign)){
|
||||
# Setting flag for later and export list
|
||||
with_pre_assign <- TRUE
|
||||
# Splitting to list for later merging
|
||||
pre <- split(pre_assign[,1],factor(pre_assign[,2],levels = seq_len(num_groups)))
|
||||
# Subtracting capacity numbers, to reflect already filled spots
|
||||
capacity <- capacity-lengths(pre)
|
||||
# Making sure pre_assigned are removed from main data set
|
||||
ds <- ds[!ds[[1]] %in% pre_assign[[1]],]
|
||||
|
||||
cost <- t(ds[,-1])
|
||||
colnames(cost) <- ds[,1]
|
||||
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
}
|
||||
|
||||
## Simple NA handling. Better to handle NAs yourself!
|
||||
cost[is.na(cost)] <- num_groups
|
||||
|
||||
i_m <- seq_len(num_groups)
|
||||
j_m <- seq_len(num_sub)
|
||||
|
||||
m <- ompr::MIPModel() |>
|
||||
ompr::add_variable(grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m,
|
||||
type = "binary") |>
|
||||
## The first constraint says that group size should not exceed capacity
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], j = j_m) <= capacity[i],
|
||||
i = i_m) |>
|
||||
## The second constraint says each subject can only be in one group
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], i = i_m) == 1, j = j_m) |>
|
||||
## The objective is set to minimize the cost of the assignments
|
||||
## Giving subjects the group with the highest possible ranking
|
||||
ompr::set_objective(ompr::sum_expr(
|
||||
cost[i, j] * grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m
|
||||
),
|
||||
"min") |>
|
||||
# ompr::solve_model(ompr.roi::with_ROI(solver = "symphony", verbosity = 1))
|
||||
ompr::solve_model(ompr.roi::with_ROI(solver = set_solver, verbosity = 1))
|
||||
|
||||
## Getting assignments
|
||||
solution <- ompr::get_solution(m, grp[i, j]) |> dplyr::filter(value > 0)
|
||||
|
||||
assign <- solution |> dplyr::select(i,j)
|
||||
|
||||
if (!is.null(rownames(cost))){
|
||||
assign$i <- rownames(cost)[assign$i]
|
||||
}
|
||||
|
||||
if (!is.null(colnames(cost))){
|
||||
assign$j <- colnames(cost)[assign$j]
|
||||
}
|
||||
|
||||
## Splitting into groups based on assignment
|
||||
assign_ls <- split(assign$j,assign$i)
|
||||
|
||||
|
||||
## Extracting subject cost for the final assignment for evaluation
|
||||
if (is.null(rownames(cost))){
|
||||
rownames(cost) <- seq_len(nrow(cost))
|
||||
}
|
||||
|
||||
if (is.null(colnames(cost))){
|
||||
colnames(cost) <- seq_len(ncol(cost))
|
||||
}
|
||||
|
||||
eval <- lapply(seq_len(length(assign_ls)),function(i){
|
||||
ndx <- match(names(assign_ls)[i],rownames(cost))
|
||||
cost[ndx,assign_ls[[i]]]
|
||||
})
|
||||
names(eval) <- names(assign_ls)
|
||||
|
||||
if (with_pre_assign){
|
||||
names(pre) <- names(assign_ls)
|
||||
assign_all <- mapply(c, assign_ls, pre, SIMPLIFY=FALSE)
|
||||
|
||||
out <- list(all_assigned=assign_all)
|
||||
} else {
|
||||
out <- list(all_assigned=assign_ls)
|
||||
}
|
||||
|
||||
export <- do.call(rbind,lapply(seq_along(out[[1]]),function(i){
|
||||
cbind("ID"=out[[1]][[i]],"Group"=names(out[[1]])[i])
|
||||
}))
|
||||
|
||||
out <- append(out,
|
||||
list(evaluation=eval,
|
||||
assigned=assign_ls,
|
||||
solution = solution,
|
||||
capacity = capacity,
|
||||
excess = excess,
|
||||
pre_assign = with_pre_assign,
|
||||
cost_scale = levels(factor(cost)),
|
||||
input=ds,
|
||||
export=export))
|
||||
# exists("excess")
|
||||
return(out)
|
||||
}
|
||||
|
||||
|
||||
## Assessment performance overview
|
||||
## The function plots costs of assignment for each subject in every group
|
||||
assignment_plot <- function(lst){
|
||||
|
||||
dl <- lst[[2]]
|
||||
cost_scale <- unique(lst[[8]])
|
||||
cap <- lst[[5]]
|
||||
cnts_ls <- lapply(dl,function(i){
|
||||
factor(i,levels=cost_scale)
|
||||
})
|
||||
require(ggplot2)
|
||||
require(patchwork)
|
||||
require(viridisLite)
|
||||
|
||||
y_max <- max(lengths(dl))
|
||||
|
||||
wrap_plots(lapply(seq_along(dl),function(i){
|
||||
ttl <- names(dl)[i]
|
||||
ns <- length(dl[[i]])
|
||||
cnts <- cnts_ls[[i]]
|
||||
ggplot2::ggplot() + ggplot2::geom_bar(ggplot2::aes(cnts,fill=cnts)) +
|
||||
ggplot2::scale_x_discrete(name = NULL, breaks=cost_scale, drop=FALSE) +
|
||||
ggplot2::scale_y_continuous(name = NULL, limits = c(0,y_max)) +
|
||||
ggplot2::scale_fill_manual(values = viridisLite::viridis(length(cost_scale), direction = -1)) +
|
||||
ggplot2::guides(fill=FALSE) +
|
||||
ggplot2::labs(title=paste0(ttl," (fill=",round(ns/cap[[i]],1),";m=",round(mean(dl[[i]]),1),";n=",ns ,")"))
|
||||
}))
|
||||
}
|
||||
|
||||
|
||||
## Helper function for Shiny
|
||||
file_extension <- function(filenames) {
|
||||
sub(pattern = "^(.*\\.|[^.]+)(?=[^.]*)", replacement = "", filenames, perl = TRUE)
|
||||
}
|
||||
|
||||
|
||||
|
319
R/prioritized_grouping.R
Normal file
319
R/prioritized_grouping.R
Normal file
|
@ -0,0 +1,319 @@
|
|||
utils::globalVariables(c("group", "grp", "i", "j", "value"))
|
||||
|
||||
#' Solve grouping based on priorities or costs.
|
||||
#'
|
||||
#' @param data data set in wide format. First column should bi ID, then one column
|
||||
#' for each group containing cost/priorities.
|
||||
#' @param cap_classes class capacity. Numeric vector length 1 or length=number
|
||||
#' of groups. If NULL equal group sizes are calculated. Default is NULL.
|
||||
#' @param excess_space allowed excess group fill in percentage. Default is 20.
|
||||
#' Supplied group capacities will be enlarged by this factors and rounded up.
|
||||
#' @param pre_grouped Pre grouped data set. Optional. Should contain two
|
||||
#' columns, 'id' and 'group', with 'group' containing the given group index.
|
||||
#' @param seed specify a seed value. For complex problems.
|
||||
#'
|
||||
#' @return list of custom class 'prioritized_groups_list'
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
#' prioritized_grouping(
|
||||
#' data=read.csv(here::here("data/prioritized_sample.csv")),
|
||||
#' pre_grouped=read.csv(here::here("data/pre_grouped.csv"))) |> plot()
|
||||
prioritized_grouping <-
|
||||
function(data,
|
||||
cap_classes = NULL,
|
||||
excess_space = 20,
|
||||
pre_grouped = NULL,
|
||||
seed = 6293812) {
|
||||
set.seed(seed = seed)
|
||||
# browser()
|
||||
requireNamespace("ROI")
|
||||
requireNamespace("ROI.plugin.symphony")
|
||||
|
||||
if (!is.data.frame(data)) {
|
||||
stop("Supplied data has to be a data frame, with each row
|
||||
are subjects and columns are groups, with the first column being
|
||||
subject identifiers")
|
||||
}
|
||||
|
||||
## This program very much trust the user to supply correctly formatted data
|
||||
cost <- t(data[, -1]) # Transpose converts to matrix
|
||||
colnames(cost) <- data[, 1]
|
||||
|
||||
nms_groups <- rownames(cost)
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
|
||||
## Adding the option to introduce a bit of head room to the classes by
|
||||
## the groups to a little bigger than the smallest possible
|
||||
## Default is to allow for an extra 20 % fill
|
||||
excess <- 1 + (excess_space / 100)
|
||||
|
||||
# generous round up of capacities
|
||||
if (is.null(cap_classes)) {
|
||||
capacity <- rep(ceiling(excess * num_sub / num_groups), num_groups)
|
||||
# } else if (!is.numeric(cap_classes)) {
|
||||
# stop("cap_classes has to be numeric")
|
||||
} else if (length(cap_classes) == 1) {
|
||||
capacity <- ceiling(rep(cap_classes, num_groups) * excess)
|
||||
} else if (length(cap_classes) == num_groups) {
|
||||
capacity <- ceiling(cap_classes * excess)
|
||||
} else {
|
||||
stop("cap_classes has to be either length 1 or same as number of groups")
|
||||
}
|
||||
|
||||
## This test should be a little more elegant
|
||||
## pre_grouped should be a data.frame or matrix with an ID and group column
|
||||
with_pre_grouped <- FALSE
|
||||
if (!is.null(pre_grouped)) {
|
||||
# Setting flag for later and export list
|
||||
with_pre_grouped <- TRUE
|
||||
|
||||
# Simple translation to allow pre_grouped to denote indices
|
||||
if (is.numeric(pre_grouped[, 2])){
|
||||
pre_grouped$pre.groups <- nms_groups[pre_grouped[, 2]]
|
||||
} else {
|
||||
pre_grouped$pre.groups <- as.character(pre_grouped[, 2])
|
||||
}
|
||||
|
||||
# Splitting to list for later merging
|
||||
pre <- split(
|
||||
pre_grouped[, 1],
|
||||
factor(pre_grouped[, 3], levels = nms_groups)
|
||||
)
|
||||
# Subtracting capacity numbers, to reflect already filled spots
|
||||
capacity <- capacity - lengths(pre)
|
||||
# Making sure pre_grouped are removed from main data set
|
||||
data <- data[!data[[1]] %in% pre_grouped[[1]], ]
|
||||
|
||||
cost <- t(data[, -1])
|
||||
colnames(cost) <- data[, 1]
|
||||
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
}
|
||||
|
||||
## Simple NA handling. Better to handle NAs yourself!
|
||||
cost[is.na(cost)] <- num_groups
|
||||
|
||||
i_m <- seq_len(num_groups)
|
||||
j_m <- seq_len(num_sub)
|
||||
|
||||
m <- ompr::MIPModel() |>
|
||||
ompr::add_variable(grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m,
|
||||
type = "binary"
|
||||
) |>
|
||||
## The first constraint says that group size should not exceed capacity
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], j = j_m) <= capacity[i],
|
||||
i = i_m
|
||||
) |>
|
||||
## The second constraint says each subject can only be in one group
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], i = i_m) == 1, j = j_m) |>
|
||||
## The objective is set to minimize the cost of the grouping
|
||||
## Giving subjects the group with the highest possible ranking
|
||||
ompr::set_objective(
|
||||
ompr::sum_expr(
|
||||
cost[i, j] * grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m
|
||||
),
|
||||
"min"
|
||||
) |>
|
||||
ompr::solve_model(ompr.roi::with_ROI(solver = "symphony", verbosity = 1))
|
||||
|
||||
if (m$status == "error") {
|
||||
stop("The algorithm is not able to solve the problem. Please adjust the
|
||||
constraints by increasing group capacities and/or excess fill")
|
||||
}
|
||||
|
||||
## Getting groups
|
||||
solution <- ompr::get_solution(m, grp[i, j]) |> dplyr::filter(value > 0)
|
||||
|
||||
grouped <- solution |> dplyr::select(i, j)
|
||||
|
||||
if (!is.null(rownames(cost))) {
|
||||
grouped$i <- rownames(cost)[grouped$i]
|
||||
}
|
||||
|
||||
if (!is.null(colnames(cost))) {
|
||||
grouped$j <- colnames(cost)[grouped$j]
|
||||
}
|
||||
|
||||
## Splitting into groups based on groups
|
||||
grouped_ls <- split(grouped$j, grouped$i)
|
||||
|
||||
|
||||
## Extracting subject cost for the final groups for evaluation
|
||||
if (is.null(rownames(cost))) {
|
||||
rownames(cost) <- seq_len(nrow(cost))
|
||||
}
|
||||
|
||||
if (is.null(colnames(cost))) {
|
||||
colnames(cost) <- seq_len(ncol(cost))
|
||||
}
|
||||
|
||||
evaluated <- lapply(seq_len(length(grouped_ls)), function(i) {
|
||||
ndx <- match(names(grouped_ls)[i], rownames(cost))
|
||||
cost[ndx, grouped_ls[[i]]]
|
||||
})
|
||||
names(evaluated) <- names(grouped_ls)
|
||||
|
||||
if (with_pre_grouped) {
|
||||
names(pre) <- names(grouped_ls)
|
||||
grouped_all <- mapply(c, grouped_ls, pre, SIMPLIFY = FALSE)
|
||||
|
||||
out <- list(all_grouped = grouped_all)
|
||||
} else {
|
||||
out <- list(all_grouped = grouped_ls)
|
||||
}
|
||||
|
||||
export <- do.call(rbind, lapply(seq_along(out[[1]]), function(i) {
|
||||
cbind("ID" = out[[1]][[i]], "Group" = names(out[[1]])[i])
|
||||
}))
|
||||
|
||||
out <- c(
|
||||
out,
|
||||
list(
|
||||
evaluation = evaluated,
|
||||
groupings = grouped_ls,
|
||||
solution = solution,
|
||||
capacity = capacity,
|
||||
excess = excess,
|
||||
pre_grouped = with_pre_grouped,
|
||||
cost_scale = levels(factor(cost)),
|
||||
input = data,
|
||||
export = export
|
||||
)
|
||||
)
|
||||
# exists("excess")
|
||||
|
||||
class(out) <- c("prioritized_groups_list", class(out))
|
||||
|
||||
return(out)
|
||||
}
|
||||
|
||||
#' Assessment performance overview
|
||||
#' @description
|
||||
#' The function plots costs of grouping for each subject in every group.
|
||||
#' Performance measures printed are fill: fraction of filling relative to the
|
||||
#' capacity specified; mean: mean priority/cost in group; n: number of subjects
|
||||
#' in the group.
|
||||
#'
|
||||
#' @param data A "prioritized_groups_list" class list from
|
||||
#' 'prioritized_grouping()'
|
||||
#' @param columns number of columns in plot
|
||||
#' @param overall logical to only print overall groups mean priority/cost
|
||||
#' @param viridis.option option value passed on to 'viridisLite::viridis'.
|
||||
#' Default="D".
|
||||
#' @param viridis.direction direction value passed on to 'viridisLite::viridis'.
|
||||
#' Default=-1.
|
||||
#'
|
||||
#' @return ggplot2 list object
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
#' #read.csv(here::here("data/prioritized_sample.csv")) |>
|
||||
#' # prioritized_grouping(cap_classes = sample(4:12, 17, TRUE)) |>
|
||||
#' # grouping_plot()
|
||||
grouping_plot <- function(data,
|
||||
columns = NULL,
|
||||
overall = FALSE,
|
||||
viridis.option="D",
|
||||
viridis.direction=-1) {
|
||||
assertthat::assert_that("prioritized_groups_list" %in% class(data))
|
||||
|
||||
dl <- data[[2]]
|
||||
cost_scale <- unique(data[[8]])
|
||||
cap <- data[[5]]
|
||||
cnts_ls <- lapply(dl, function(i) {
|
||||
factor(i, levels = cost_scale)
|
||||
})
|
||||
|
||||
y_max <- max(lengths(dl))
|
||||
|
||||
if (overall) {
|
||||
ds <- tibble::tibble(
|
||||
group = seq_along(dl),
|
||||
mean = round(Reduce(c, lapply(dl, mean)), 1)
|
||||
)
|
||||
out <- ds |>
|
||||
ggplot2::ggplot(ggplot2::aes(x = group, y = mean, fill = mean)) +
|
||||
ggplot2::geom_bar(stat = "identity") +
|
||||
ggplot2::geom_hline(yintercept = 1) +
|
||||
ggplot2::scale_fill_viridis_c(option=viridis.option,
|
||||
direction = viridis.direction) +
|
||||
ggplot2::guides(fill = "none") +
|
||||
ggplot2::scale_x_continuous(name = "Groups", breaks = ds$group) +
|
||||
ggplot2::ylab("Mean priority/cost") +
|
||||
ggplot2::labs(
|
||||
title = "Overall group-wise mean priority/cost of groupings",
|
||||
subtitle = "Horizontal line marking the perfect mean=1 for reference"
|
||||
)
|
||||
} else {
|
||||
out <- lapply(seq_along(dl), function(i) {
|
||||
ttl <- names(dl)[i]
|
||||
ns <- length(dl[[i]])
|
||||
cnts <- cnts_ls[[i]]
|
||||
ggplot2::ggplot() +
|
||||
ggplot2::geom_bar(ggplot2::aes(cnts, fill = cnts)) +
|
||||
ggplot2::scale_x_discrete(
|
||||
name = NULL,
|
||||
breaks = cost_scale,
|
||||
drop = FALSE
|
||||
) +
|
||||
ggplot2::scale_y_continuous(name = NULL, limits = c(0, y_max)) +
|
||||
ggplot2::scale_fill_manual(
|
||||
values = viridisLite::viridis(length(cost_scale),
|
||||
direction = viridis.direction,
|
||||
option = viridis.option)
|
||||
) +
|
||||
ggplot2::guides(fill = "none") +
|
||||
ggplot2::labs(
|
||||
title =
|
||||
paste0(
|
||||
ttl, " (fill=", round(ns / cap[[i]], 1), ";n=", ns, ";mean=",
|
||||
round(mean(dl[[i]]), 1), ")"
|
||||
)
|
||||
)
|
||||
}) |>
|
||||
patchwork::wrap_plots(ncol = columns)
|
||||
}
|
||||
|
||||
return(out)
|
||||
}
|
||||
|
||||
#' Plot extension for easy groupings plot
|
||||
#'
|
||||
#' @param data data of class 'prioritized_groups_list'
|
||||
#' @param ... passed on to 'grouping_plot()'
|
||||
#'
|
||||
#' @return ggplot2 list object
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
#' read.csv(here::here("data/prioritized_sample.csv")) |>
|
||||
#' prioritized_grouping() |>
|
||||
#' plot(overall = TRUE, viridis.option="D",viridis.direction=-1)
|
||||
plot.prioritized_groups_list <- function(data, ...) {
|
||||
grouping_plot(data, ...)
|
||||
}
|
||||
|
||||
## Helper function for Shiny
|
||||
#' Title
|
||||
#'
|
||||
#' @param filenames character vector of file name. Splits at the last '.'.
|
||||
#'
|
||||
#' @return character vector of extension
|
||||
#' @export
|
||||
#'
|
||||
#' @examples
|
||||
#' file_extension("data/prioritized_sample.csv")
|
||||
file_extension <- function(filenames) {
|
||||
sub(
|
||||
pattern = "^(.*\\.|[^.]+)(?=[^.]*)",
|
||||
replacement = "",
|
||||
filenames, perl = TRUE
|
||||
)
|
||||
}
|
21
README.md
21
README.md
|
@ -1,14 +1,23 @@
|
|||
# First try with shinylive
|
||||
# Group allocation based on individual subject prioritization
|
||||
|
||||
Reviving an old project to use shinylive with R
|
||||
This project was initially developed after a co-worker told me, he would be grouping students by individual priorities by hand and was preparing to spend most of a day doing so. I insisted on having a go at solving that problem in *R*. Now some of the some functionality is baked into Teams (that is what I am told at least), though that is not because of me.
|
||||
|
||||
The functionality has later been further extended to allow for the so-called "pedagogical redraw", where some students are manually grouped in consideration of other factors than only the given priorities before the algorithmic assignment. This single addition makes it quite useful in schools and other educational institutions, as some customisation is allowed before the grouping.
|
||||
|
||||
## Shortcoming
|
||||
## Shiny version
|
||||
|
||||
This project requires ROI.plugin.symphony to solve the problem, which depends on the RSymphony project (which again adapts SYMPHONY MILP), which is not [compiled for webR](https://repo.r-wasm.org/).
|
||||
I am hosting a shiny version of this package, that allows to use the majority of functions.
|
||||
|
||||
[Use the app here](https://agdamsbo.shinyapps.io/prioritized-grouping/)
|
||||
|
||||
I have also attempted to package this as a shinylive program, but the "Symphony" solver has not been build to run in `{webr}`. When/if this happens, I will have another go.
|
||||
|
||||
## Install the `{prioritized.grouping}` package
|
||||
|
||||
Clone the project and run the solver with
|
||||
```
|
||||
shiny::runApp(appDir = here::here("R/"),launch.browser = TRUE)
|
||||
pak::pak("agdamsbo/prioritized.grouping")
|
||||
```
|
||||
|
||||
## Code of Conduct
|
||||
|
||||
Please note that the prioritized.grouping project is released with a [Contributor Code of Conduct](https://contributor-covenant.org/version/2/1/CODE_OF_CONDUCT.html). By contributing to this project, you agree to abide by its terms.
|
||||
|
|
4
_pkgdown.yml
Normal file
4
_pkgdown.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
url: https://agdamsbo.github.io/prioritized.grouping/
|
||||
template:
|
||||
bootstrap: 5
|
||||
|
10
app/rsconnect/shinyapps.io/agdamsbo/prioritized-grouping.dcf
Normal file
10
app/rsconnect/shinyapps.io/agdamsbo/prioritized-grouping.dcf
Normal file
|
@ -0,0 +1,10 @@
|
|||
name: prioritized-grouping
|
||||
title:
|
||||
username: agdamsbo
|
||||
account: agdamsbo
|
||||
server: shinyapps.io
|
||||
hostUrl: https://api.shinyapps.io/v1
|
||||
appId: 12977223
|
||||
bundleId: 9205937
|
||||
url: https://agdamsbo.shinyapps.io/prioritized-grouping/
|
||||
version: 1
|
436
app/server.R
Normal file
436
app/server.R
Normal file
|
@ -0,0 +1,436 @@
|
|||
|
||||
|
||||
########
|
||||
#### Current file: R//prioritized_grouping.R
|
||||
########
|
||||
|
||||
utils::globalVariables(c("group", "grp", "i", "j", "value"))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
prioritized_grouping <-
|
||||
function(data,
|
||||
cap_classes = NULL,
|
||||
excess_space = 20,
|
||||
pre_grouped = NULL,
|
||||
seed = 6293812) {
|
||||
set.seed(seed = seed)
|
||||
# browser()
|
||||
requireNamespace("ROI")
|
||||
requireNamespace("ROI.plugin.symphony")
|
||||
|
||||
if (!is.data.frame(data)) {
|
||||
stop("Supplied data has to be a data frame, with each row
|
||||
are subjects and columns are groups, with the first column being
|
||||
subject identifiers")
|
||||
}
|
||||
|
||||
## This program very much trust the user to supply correctly formatted data
|
||||
cost <- t(data[, -1]) # Transpose converts to matrix
|
||||
colnames(cost) <- data[, 1]
|
||||
|
||||
nms_groups <- rownames(cost)
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
|
||||
## Adding the option to introduce a bit of head room to the classes by
|
||||
## the groups to a little bigger than the smallest possible
|
||||
## Default is to allow for an extra 20 % fill
|
||||
excess <- 1 + (excess_space / 100)
|
||||
|
||||
# generous round up of capacities
|
||||
if (is.null(cap_classes)) {
|
||||
capacity <- rep(ceiling(excess * num_sub / num_groups), num_groups)
|
||||
# } else if (!is.numeric(cap_classes)) {
|
||||
# stop("cap_classes has to be numeric")
|
||||
} else if (length(cap_classes) == 1) {
|
||||
capacity <- ceiling(rep(cap_classes, num_groups) * excess)
|
||||
} else if (length(cap_classes) == num_groups) {
|
||||
capacity <- ceiling(cap_classes * excess)
|
||||
} else {
|
||||
stop("cap_classes has to be either length 1 or same as number of groups")
|
||||
}
|
||||
|
||||
## This test should be a little more elegant
|
||||
## pre_grouped should be a data.frame or matrix with an ID and group column
|
||||
with_pre_grouped <- FALSE
|
||||
if (!is.null(pre_grouped)) {
|
||||
# Setting flag for later and export list
|
||||
with_pre_grouped <- TRUE
|
||||
|
||||
# Simple translation to allow pre_grouped to denote indices
|
||||
if (is.numeric(pre_grouped[, 2])){
|
||||
pre_grouped$pre.groups <- nms_groups[pre_grouped[, 2]]
|
||||
} else {
|
||||
pre_grouped$pre.groups <- as.character(pre_grouped[, 2])
|
||||
}
|
||||
|
||||
# Splitting to list for later merging
|
||||
pre <- split(
|
||||
pre_grouped[, 1],
|
||||
factor(pre_grouped[, 3], levels = nms_groups)
|
||||
)
|
||||
# Subtracting capacity numbers, to reflect already filled spots
|
||||
capacity <- capacity - lengths(pre)
|
||||
# Making sure pre_grouped are removed from main data set
|
||||
data <- data[!data[[1]] %in% pre_grouped[[1]], ]
|
||||
|
||||
cost <- t(data[, -1])
|
||||
colnames(cost) <- data[, 1]
|
||||
|
||||
num_groups <- dim(cost)[1]
|
||||
num_sub <- dim(cost)[2]
|
||||
}
|
||||
|
||||
## Simple NA handling. Better to handle NAs yourself!
|
||||
cost[is.na(cost)] <- num_groups
|
||||
|
||||
i_m <- seq_len(num_groups)
|
||||
j_m <- seq_len(num_sub)
|
||||
|
||||
m <- ompr::MIPModel() |>
|
||||
ompr::add_variable(grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m,
|
||||
type = "binary"
|
||||
) |>
|
||||
## The first constraint says that group size should not exceed capacity
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], j = j_m) <= capacity[i],
|
||||
i = i_m
|
||||
) |>
|
||||
## The second constraint says each subject can only be in one group
|
||||
ompr::add_constraint(ompr::sum_expr(grp[i, j], i = i_m) == 1, j = j_m) |>
|
||||
## The objective is set to minimize the cost of the grouping
|
||||
## Giving subjects the group with the highest possible ranking
|
||||
ompr::set_objective(
|
||||
ompr::sum_expr(
|
||||
cost[i, j] * grp[i, j],
|
||||
i = i_m,
|
||||
j = j_m
|
||||
),
|
||||
"min"
|
||||
) |>
|
||||
ompr::solve_model(ompr.roi::with_ROI(solver = "symphony", verbosity = 1))
|
||||
|
||||
if (m$status == "error") {
|
||||
stop("The algorithm is not able to solve the problem. Please adjust the
|
||||
constraints by increasing group capacities and/or excess fill")
|
||||
}
|
||||
|
||||
## Getting groups
|
||||
solution <- ompr::get_solution(m, grp[i, j]) |> dplyr::filter(value > 0)
|
||||
|
||||
grouped <- solution |> dplyr::select(i, j)
|
||||
|
||||
if (!is.null(rownames(cost))) {
|
||||
grouped$i <- rownames(cost)[grouped$i]
|
||||
}
|
||||
|
||||
if (!is.null(colnames(cost))) {
|
||||
grouped$j <- colnames(cost)[grouped$j]
|
||||
}
|
||||
|
||||
## Splitting into groups based on groups
|
||||
grouped_ls <- split(grouped$j, grouped$i)
|
||||
|
||||
|
||||
## Extracting subject cost for the final groups for evaluation
|
||||
if (is.null(rownames(cost))) {
|
||||
rownames(cost) <- seq_len(nrow(cost))
|
||||
}
|
||||
|
||||
if (is.null(colnames(cost))) {
|
||||
colnames(cost) <- seq_len(ncol(cost))
|
||||
}
|
||||
|
||||
evaluated <- lapply(seq_len(length(grouped_ls)), function(i) {
|
||||
ndx <- match(names(grouped_ls)[i], rownames(cost))
|
||||
cost[ndx, grouped_ls[[i]]]
|
||||
})
|
||||
names(evaluated) <- names(grouped_ls)
|
||||
|
||||
if (with_pre_grouped) {
|
||||
names(pre) <- names(grouped_ls)
|
||||
grouped_all <- mapply(c, grouped_ls, pre, SIMPLIFY = FALSE)
|
||||
|
||||
out <- list(all_grouped = grouped_all)
|
||||
} else {
|
||||
out <- list(all_grouped = grouped_ls)
|
||||
}
|
||||
|
||||
export <- do.call(rbind, lapply(seq_along(out[[1]]), function(i) {
|
||||
cbind("ID" = out[[1]][[i]], "Group" = names(out[[1]])[i])
|
||||
}))
|
||||
|
||||
out <- c(
|
||||
out,
|
||||
list(
|
||||
evaluation = evaluated,
|
||||
groupings = grouped_ls,
|
||||
solution = solution,
|
||||
capacity = capacity,
|
||||
excess = excess,
|
||||
pre_grouped = with_pre_grouped,
|
||||
cost_scale = levels(factor(cost)),
|
||||
input = data,
|
||||
export = export
|
||||
)
|
||||
)
|
||||
# exists("excess")
|
||||
|
||||
class(out) <- c("prioritized_groups_list", class(out))
|
||||
|
||||
return(out)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
grouping_plot <- function(data,
|
||||
columns = NULL,
|
||||
overall = FALSE,
|
||||
viridis.option="D",
|
||||
viridis.direction=-1) {
|
||||
assertthat::assert_that("prioritized_groups_list" %in% class(data))
|
||||
|
||||
dl <- data[[2]]
|
||||
cost_scale <- unique(data[[8]])
|
||||
cap <- data[[5]]
|
||||
cnts_ls <- lapply(dl, function(i) {
|
||||
factor(i, levels = cost_scale)
|
||||
})
|
||||
|
||||
y_max <- max(lengths(dl))
|
||||
|
||||
if (overall) {
|
||||
ds <- tibble::tibble(
|
||||
group = seq_along(dl),
|
||||
mean = round(Reduce(c, lapply(dl, mean)), 1)
|
||||
)
|
||||
out <- ds |>
|
||||
ggplot2::ggplot(ggplot2::aes(x = group, y = mean, fill = mean)) +
|
||||
ggplot2::geom_bar(stat = "identity") +
|
||||
ggplot2::geom_hline(yintercept = 1) +
|
||||
ggplot2::scale_fill_viridis_c(option=viridis.option,
|
||||
direction = viridis.direction) +
|
||||
ggplot2::guides(fill = "none") +
|
||||
ggplot2::scale_x_continuous(name = "Groups", breaks = ds$group) +
|
||||
ggplot2::ylab("Mean priority/cost") +
|
||||
ggplot2::labs(
|
||||
title = "Overall group-wise mean priority/cost of groupings",
|
||||
subtitle = "Horizontal line marking the perfect mean=1 for reference"
|
||||
)
|
||||
} else {
|
||||
out <- lapply(seq_along(dl), function(i) {
|
||||
ttl <- names(dl)[i]
|
||||
ns <- length(dl[[i]])
|
||||
cnts <- cnts_ls[[i]]
|
||||
ggplot2::ggplot() +
|
||||
ggplot2::geom_bar(ggplot2::aes(cnts, fill = cnts)) +
|
||||
ggplot2::scale_x_discrete(
|
||||
name = NULL,
|
||||
breaks = cost_scale,
|
||||
drop = FALSE
|
||||
) +
|
||||
ggplot2::scale_y_continuous(name = NULL, limits = c(0, y_max)) +
|
||||
ggplot2::scale_fill_manual(
|
||||
values = viridisLite::viridis(length(cost_scale),
|
||||
direction = viridis.direction,
|
||||
option = viridis.option)
|
||||
) +
|
||||
ggplot2::guides(fill = "none") +
|
||||
ggplot2::labs(
|
||||
title =
|
||||
paste0(
|
||||
ttl, " (fill=", round(ns / cap[[i]], 1), ";n=", ns, ";mean=",
|
||||
round(mean(dl[[i]]), 1), ")"
|
||||
)
|
||||
)
|
||||
}) |>
|
||||
patchwork::wrap_plots(ncol = columns)
|
||||
}
|
||||
|
||||
return(out)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
plot.prioritized_groups_list <- function(data, ...) {
|
||||
grouping_plot(data, ...)
|
||||
}
|
||||
|
||||
## Helper function for Shiny
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
file_extension <- function(filenames) {
|
||||
sub(
|
||||
pattern = "^(.*\\.|[^.]+)(?=[^.]*)",
|
||||
replacement = "",
|
||||
filenames, perl = TRUE
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
########
|
||||
#### Current file: app/server_raw.R
|
||||
########
|
||||
|
||||
library(shiny)
|
||||
server <- function(input, output, session) {
|
||||
# source("https://git.nikohuru.dk/au-phd/PhysicalActivityandStrokeOutcome/raw/branch/main/side%20projects/assignment.R")
|
||||
# source(here::here("R/group_assign.R"))
|
||||
|
||||
dat <- reactive({
|
||||
# input$file1 will be NULL initially. After the user selects
|
||||
# and uploads a file, head of that data file by default,
|
||||
# or all rows if selected, will be shown.
|
||||
|
||||
req(input$file1)
|
||||
# Make laoding dependent of file name extension (file_ext())
|
||||
ext <- file_extension(input$file1$datapath)
|
||||
|
||||
tryCatch(
|
||||
{
|
||||
if (ext == "csv") {
|
||||
df <- utils::read.csv(input$file1$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext %in% c("xls", "xlsx")) {
|
||||
df <- openxlsx::read.xlsx(input$file1$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext == "ods") {
|
||||
df <- readODS::read_ods(file = file)
|
||||
} else {
|
||||
stop("Input file format has to be on of:
|
||||
'.csv', '.xls', '.xlsx' or '.ods'")
|
||||
}
|
||||
},
|
||||
error = function(e) {
|
||||
# return a safeError if a parsing error occurs
|
||||
stop(safeError(e))
|
||||
}
|
||||
)
|
||||
|
||||
return(df)
|
||||
})
|
||||
|
||||
dat_pre <- reactive({
|
||||
|
||||
# req(input$file2)
|
||||
# Make laoding dependent of file name extension (file_ext())
|
||||
if (!is.null(input$file2$datapath)){
|
||||
ext <- file_extension(input$file2$datapath)
|
||||
|
||||
if (ext == "csv") {
|
||||
df <- utils::read.csv(input$file2$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext %in% c("xls", "xlsx")) {
|
||||
df <- openxlsx::read.xlsx(input$file2$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext == "ods") {
|
||||
df <- readODS::read_ods(file = file)
|
||||
} else {
|
||||
stop("Input file format has to be on of:
|
||||
'.csv', '.xls', '.xlsx' or '.ods'")
|
||||
}
|
||||
|
||||
return(df)
|
||||
} else {
|
||||
return(NULL)
|
||||
}
|
||||
|
||||
})
|
||||
|
||||
groups <-
|
||||
reactive({
|
||||
grouped <- prioritized_grouping(
|
||||
data = dat(),
|
||||
excess_space = input$excess,
|
||||
pre_grouped = dat_pre()
|
||||
)
|
||||
return(grouped)
|
||||
})
|
||||
|
||||
|
||||
plot.overall <- reactive({
|
||||
dplyr::case_match(input$overall.plot,
|
||||
"yes"~TRUE,
|
||||
"no"~FALSE,
|
||||
.default=NULL)
|
||||
})
|
||||
|
||||
output$raw.data.tbl <- renderTable({
|
||||
groups()$export
|
||||
})
|
||||
|
||||
output$pre.groups <- renderTable({
|
||||
dat_pre()
|
||||
})
|
||||
|
||||
output$input <- renderTable({
|
||||
dat()
|
||||
})
|
||||
|
||||
output$groups.plt <- renderPlot({
|
||||
grouping_plot(groups(),overall = plot.overall())
|
||||
})
|
||||
|
||||
# Downloadable csv of selected dataset ----
|
||||
output$downloadData <- downloadHandler(
|
||||
filename = "prioritized_grouping.csv",
|
||||
|
||||
content = function(file) {
|
||||
write.csv(groups()$export, file, row.names = FALSE)
|
||||
}
|
||||
)
|
||||
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
library(shiny)
|
||||
server <- function(input, output, session) {
|
||||
# source("https://git.nikohuru.dk/au-phd/PhysicalActivityandStrokeOutcome/raw/branch/main/side%20projects/assignment.R")
|
||||
source(here::here("R/group_assign.R"))
|
||||
# source(here::here("R/group_assign.R"))
|
||||
|
||||
dat <- reactive({
|
||||
# input$file1 will be NULL initially. After the user selects
|
||||
|
@ -15,12 +15,14 @@ server <- function(input, output, session) {
|
|||
tryCatch(
|
||||
{
|
||||
if (ext == "csv") {
|
||||
df <- read.csv(input$file1$datapath,na.strings = c("NA", '""',""))
|
||||
df <- utils::read.csv(input$file1$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext %in% c("xls", "xlsx")) {
|
||||
df <- openxlsx::read.xlsx(input$file1$datapath,na.strings = c("NA", '""',""))
|
||||
|
||||
} else if (ext == "ods") {
|
||||
df <- readODS::read_ods(file = file)
|
||||
} else {
|
||||
stop("Input file format has to be either '.csv', '.xls' or '.xlsx'")
|
||||
stop("Input file format has to be on of:
|
||||
'.csv', '.xls', '.xlsx' or '.ods'")
|
||||
}
|
||||
},
|
||||
error = function(e) {
|
||||
|
@ -40,12 +42,14 @@ server <- function(input, output, session) {
|
|||
ext <- file_extension(input$file2$datapath)
|
||||
|
||||
if (ext == "csv") {
|
||||
df <- read.csv(input$file2$datapath,na.strings = c("NA", '""',""))
|
||||
df <- utils::read.csv(input$file2$datapath,na.strings = c("NA", '""',""))
|
||||
} else if (ext %in% c("xls", "xlsx")) {
|
||||
df <- openxlsx::read.xlsx(input$file2$datapath,na.strings = c("NA", '""',""))
|
||||
|
||||
} else if (ext == "ods") {
|
||||
df <- readODS::read_ods(file = file)
|
||||
} else {
|
||||
stop("Input file format has to be either '.csv', '.xls' or '.xlsx'")
|
||||
stop("Input file format has to be on of:
|
||||
'.csv', '.xls', '.xlsx' or '.ods'")
|
||||
}
|
||||
|
||||
return(df)
|
||||
|
@ -55,22 +59,29 @@ server <- function(input, output, session) {
|
|||
|
||||
})
|
||||
|
||||
assign <-
|
||||
groups <-
|
||||
reactive({
|
||||
assigned <- group_assignment(
|
||||
ds = dat(),
|
||||
excess_space = input$ecxess,
|
||||
pre_assign = dat_pre()
|
||||
grouped <- prioritized_grouping(
|
||||
data = dat(),
|
||||
excess_space = input$excess,
|
||||
pre_grouped = dat_pre()
|
||||
)
|
||||
return(assigned)
|
||||
return(grouped)
|
||||
})
|
||||
|
||||
|
||||
output$raw.data.tbl <- renderTable({
|
||||
assign()$export
|
||||
plot.overall <- reactive({
|
||||
dplyr::case_match(input$overall.plot,
|
||||
"yes"~TRUE,
|
||||
"no"~FALSE,
|
||||
.default=NULL)
|
||||
})
|
||||
|
||||
output$pre.assign <- renderTable({
|
||||
output$raw.data.tbl <- renderTable({
|
||||
groups()$export
|
||||
})
|
||||
|
||||
output$pre.groups <- renderTable({
|
||||
dat_pre()
|
||||
})
|
||||
|
||||
|
@ -78,16 +89,16 @@ server <- function(input, output, session) {
|
|||
dat()
|
||||
})
|
||||
|
||||
output$assign.plt <- renderPlot({
|
||||
assignment_plot(assign())
|
||||
output$groups.plt <- renderPlot({
|
||||
grouping_plot(groups(),overall = plot.overall())
|
||||
})
|
||||
|
||||
# Downloadable csv of selected dataset ----
|
||||
output$downloadData <- downloadHandler(
|
||||
filename = "group_assignment.csv",
|
||||
filename = "prioritized_grouping.csv",
|
||||
|
||||
content = function(file) {
|
||||
write.csv(assign()$export, file, row.names = FALSE)
|
||||
write.csv(groups()$export, file, row.names = FALSE)
|
||||
}
|
||||
)
|
||||
|
|
@ -4,8 +4,8 @@ ui <- fluidPage(
|
|||
## Application title
|
||||
## -----------------------------------------------------------------------------
|
||||
|
||||
titlePanel("Assign groups based on costs/priorities.",
|
||||
windowTitle = "Group assignment calculator"),
|
||||
titlePanel("Group allocation based on individual subject prioritization.",
|
||||
windowTitle = "Prioritized grouping calculator"),
|
||||
h5(
|
||||
"Please note this calculator is only meant as a proof of concept for educational purposes,
|
||||
and the author will take no responsibility for the results of the calculator.
|
||||
|
@ -23,10 +23,10 @@ ui <- fluidPage(
|
|||
sidebarLayout(
|
||||
sidebarPanel(
|
||||
numericInput(
|
||||
inputId = "ecxess",
|
||||
label = "Excess space",
|
||||
value = 1,
|
||||
step = .05
|
||||
inputId = "excess",
|
||||
label = "Excess space (%)",
|
||||
value = 20,
|
||||
step = 5
|
||||
),
|
||||
p("As default, the program will try to evenly distribute subjects in groups.
|
||||
This factor will add more capacity to each group, for an overall lesser cost,
|
||||
|
@ -43,7 +43,7 @@ ui <- fluidPage(
|
|||
label = "Choose main data file",
|
||||
multiple = FALSE,
|
||||
accept = c(
|
||||
".csv",".xls",".xlsx"
|
||||
".csv",".xls",".xlsx", ".ods"
|
||||
)
|
||||
),
|
||||
strong("Columns: ID, group1, group2, ... groupN."),
|
||||
|
@ -52,6 +52,16 @@ ui <- fluidPage(
|
|||
Lowest score, for highest priority.
|
||||
Non-ranked should contain a number (eg lowest score+1).
|
||||
Will handle missings but try to avoid."),
|
||||
shiny::radioButtons(
|
||||
inputId = "overall.plot",
|
||||
label = "Print overall mean grouping priorities/costs only?",
|
||||
selected = "no",
|
||||
choices = list(
|
||||
"Yes" = "yes",
|
||||
"No" = "no"
|
||||
)
|
||||
),
|
||||
|
||||
|
||||
fileInput(
|
||||
inputId = "file2",
|
||||
|
@ -85,11 +95,11 @@ ui <- fluidPage(
|
|||
|
||||
tabPanel(
|
||||
"Summary",
|
||||
h3("Assignment plot"),
|
||||
h3("Grouping plot"),
|
||||
p("These plots are to summarise simple performance meassures for the assignment.
|
||||
'f' is group fill fraction and 'm' is mean cost in group."),
|
||||
|
||||
plotOutput("assign.plt")
|
||||
plotOutput("groups.plt")
|
||||
|
||||
),
|
||||
|
||||
|
@ -112,7 +122,7 @@ ui <- fluidPage(
|
|||
h3("Pre-assigned groups"),
|
||||
p("Appears empty if none is uploaded."),
|
||||
|
||||
htmlOutput("pre.assign", container = span)
|
||||
htmlOutput("pre.groups", container = span)
|
||||
|
||||
)
|
||||
|
File diff suppressed because one or more lines are too long
|
@ -1,34 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Shiny examples browser</title>
|
||||
<script
|
||||
src="../shinylive/load-shinylive-sw.js"
|
||||
type="module"
|
||||
></script>
|
||||
<script src="../shinylive/jquery.min.js"></script>
|
||||
<script src="../shinylive/jquery.terminal/js/jquery.terminal.min.js"></script>
|
||||
<link
|
||||
href="../shinylive/jquery.terminal/css/jquery.terminal.min.css"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<script type="module">
|
||||
import { runApp } from "../shinylive/shinylive.js";
|
||||
const response = await fetch("../app.json");
|
||||
if (!response.ok) {
|
||||
throw new Error("HTTP error loading app.json: " + response.status);
|
||||
}
|
||||
const appFiles = await response.json();
|
||||
|
||||
const appRoot = document.getElementById("root");
|
||||
runApp(appRoot, "editor-terminal-viewer", {startFiles: appFiles}, "r");
|
||||
</script>
|
||||
<link rel="stylesheet" href="../shinylive/style-resets.css" />
|
||||
<link rel="stylesheet" href="../shinylive/shinylive.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div style="height: 100vh; width: 100vw" id="root"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Shiny App</title>
|
||||
<script
|
||||
src="./shinylive/load-shinylive-sw.js"
|
||||
type="module"
|
||||
></script>
|
||||
<script type="module">
|
||||
import { runApp } from "./shinylive/shinylive.js";
|
||||
const response = await fetch("./app.json");
|
||||
if (!response.ok) {
|
||||
throw new Error("HTTP error loading app.json: " + response.status);
|
||||
}
|
||||
const appFiles = await response.json();
|
||||
|
||||
const appRoot = document.getElementById("root");
|
||||
runApp(appRoot, "viewer", {startFiles: appFiles}, "r");
|
||||
</script>
|
||||
<link rel="stylesheet" href="./shinylive/style-resets.css" />
|
||||
<link rel="stylesheet" href="./shinylive/shinylive.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div style="height: 100vh; width: 100vw" id="root"></div>
|
||||
</body>
|
||||
</html>
|
2243
docs/shinylive-sw.js
2243
docs/shinylive-sw.js
File diff suppressed because it is too large
Load diff
|
@ -1,498 +0,0 @@
|
|||
/* Shinylive 0.2.3
|
||||
// Copyright 2023 RStudio, PBC */
|
||||
/* node_modules/balloon-css/balloon.min.css */
|
||||
:root {
|
||||
--balloon-border-radius: 2px;
|
||||
--balloon-color: rgba(16,16,16,0.95);
|
||||
--balloon-text-color: #fff;
|
||||
--balloon-font-size: 12px;
|
||||
--balloon-move: 4px;
|
||||
}
|
||||
button[aria-label][data-balloon-pos] {
|
||||
overflow: visible;
|
||||
}
|
||||
[aria-label][data-balloon-pos] {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
}
|
||||
[aria-label][data-balloon-pos]:after {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all 0.18s ease-out 0.18s;
|
||||
text-indent: 0;
|
||||
font-family:
|
||||
-apple-system,
|
||||
BlinkMacSystemFont,
|
||||
"Segoe UI",
|
||||
Roboto,
|
||||
Oxygen,
|
||||
Ubuntu,
|
||||
Cantarell,
|
||||
"Open Sans",
|
||||
"Helvetica Neue",
|
||||
sans-serif;
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
text-shadow: none;
|
||||
font-size: var(--balloon-font-size);
|
||||
background: var(--balloon-color);
|
||||
border-radius: 2px;
|
||||
color: var(--balloon-text-color);
|
||||
border-radius: var(--balloon-border-radius);
|
||||
content: attr(aria-label);
|
||||
padding: .5em 1em;
|
||||
position: absolute;
|
||||
white-space: nowrap;
|
||||
z-index: 10;
|
||||
}
|
||||
[aria-label][data-balloon-pos]:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 5px solid transparent;
|
||||
border-top-color: var(--balloon-color);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
transition: all 0.18s ease-out 0.18s;
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
}
|
||||
[aria-label][data-balloon-pos]:hover:before,
|
||||
[aria-label][data-balloon-pos]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-visible]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-visible]:after,
|
||||
[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:before,
|
||||
[aria-label][data-balloon-pos]:not([data-balloon-nofocus]):focus:after {
|
||||
opacity: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
[aria-label][data-balloon-pos].font-awesome:after {
|
||||
font-family:
|
||||
FontAwesome,
|
||||
-apple-system,
|
||||
BlinkMacSystemFont,
|
||||
"Segoe UI",
|
||||
Roboto,
|
||||
Oxygen,
|
||||
Ubuntu,
|
||||
Cantarell,
|
||||
"Open Sans",
|
||||
"Helvetica Neue",
|
||||
sans-serif;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-break]:after {
|
||||
white-space: pre;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-break][data-balloon-length]:after {
|
||||
white-space: pre-line;
|
||||
word-break: break-word;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-blunt]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-blunt]:after {
|
||||
transition: none;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:after {
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up][data-balloon-visible]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down][data-balloon-visible]:before {
|
||||
transform: translate(-50%, 0);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-left]:after {
|
||||
left: 0;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-left]:before {
|
||||
left: 5px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right]:after {
|
||||
right: 0;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right]:before {
|
||||
right: 5px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:after {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-po*=-left]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-po*=-left][data-balloon-visible]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos*=-right][data-balloon-visible]:before {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=up]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=up]:after {
|
||||
bottom: 100%;
|
||||
transform-origin: top;
|
||||
transform: translate(0, var(--balloon-move));
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=up]:after {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=up]:after {
|
||||
left: 50%;
|
||||
transform: translate(-50%, var(--balloon-move));
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=down]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=down]:after {
|
||||
top: 100%;
|
||||
transform: translate(0, calc(var(--balloon-move) * -1));
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=down]:after {
|
||||
margin-top: 10px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos^=down]:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 5px solid transparent;
|
||||
border-bottom-color: var(--balloon-color);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=down]:before {
|
||||
left: 50%;
|
||||
transform: translate(-50%, calc(var(--balloon-move) * -1));
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:after {
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left][data-balloon-visible]:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:hover:before,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right][data-balloon-visible]:before {
|
||||
transform: translate(0, -50%);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:before {
|
||||
right: 100%;
|
||||
top: 50%;
|
||||
transform: translate(var(--balloon-move), -50%);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:after {
|
||||
margin-right: 10px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=left]:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 5px solid transparent;
|
||||
border-left-color: var(--balloon-color);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:after,
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:before {
|
||||
left: 100%;
|
||||
top: 50%;
|
||||
transform: translate(calc(var(--balloon-move) * -1), -50%);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:after {
|
||||
margin-left: 10px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-pos=right]:before {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border: 5px solid transparent;
|
||||
border-right-color: var(--balloon-color);
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length]:after {
|
||||
white-space: normal;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length=small]:after {
|
||||
width: 80px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length=medium]:after {
|
||||
width: 150px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length=large]:after {
|
||||
width: 260px;
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after {
|
||||
width: 380px;
|
||||
}
|
||||
@media screen and (max-width: 768px) {
|
||||
[aria-label][data-balloon-pos][data-balloon-length=xlarge]:after {
|
||||
width: 90vw;
|
||||
}
|
||||
}
|
||||
[aria-label][data-balloon-pos][data-balloon-length=fit]:after {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* src/Components/Editor.css */
|
||||
.shinylive-editor {
|
||||
--bg-light-shade-color: #f6f6f6;
|
||||
--button-gray-color: #999;
|
||||
--button-hover-color: #hsl(207, 69%, 25%);
|
||||
--border-color: #aaa;
|
||||
--pad: 5px;
|
||||
display: grid;
|
||||
grid-template-rows: auto 1fr;
|
||||
grid-template-areas: "header" "editor";
|
||||
position: relative;
|
||||
}
|
||||
.ResizableGrid.editor-viewer:not(.been-dragged) > .shinylive-editor {
|
||||
max-height: 800px;
|
||||
}
|
||||
.editor-header {
|
||||
grid-area: header;
|
||||
}
|
||||
.editor-container {
|
||||
grid-area: editor;
|
||||
}
|
||||
.shinylive-editor > div {
|
||||
min-width: 0;
|
||||
min-height: 0;
|
||||
}
|
||||
.editor-header {
|
||||
display: flex;
|
||||
padding-top: var(--pad);
|
||||
padding-left: var(--pad);
|
||||
padding-right: var(--pad);
|
||||
justify-content: space-between;
|
||||
align-items: flex-end;
|
||||
border-bottom: 1px solid var(--border-color);
|
||||
}
|
||||
.editor-files > button {
|
||||
font-size: 14px;
|
||||
font-family: var(--font-face);
|
||||
height: 26px;
|
||||
background-color: var(--bg-light-shade-color);
|
||||
color: #444;
|
||||
border: 1px solid #ddd;
|
||||
border-top-left-radius: 3px;
|
||||
border-top-right-radius: 3px;
|
||||
border-bottom: none;
|
||||
border-bottom-left-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
padding: 0 2px;
|
||||
}
|
||||
.editor-files button svg {
|
||||
vertical-align: unset;
|
||||
}
|
||||
.editor-filename {
|
||||
padding: 0 4px;
|
||||
}
|
||||
.editor-files > button.selected {
|
||||
color: black;
|
||||
background-color: var(--colors-bg);
|
||||
border-color: var(--border-color);
|
||||
position: relative;
|
||||
cursor: text;
|
||||
}
|
||||
.editor-files > button.selected::after {
|
||||
content: "";
|
||||
width: 100%;
|
||||
height: 4px;
|
||||
background-color: var(--colors-bg);
|
||||
position: absolute;
|
||||
bottom: -3px;
|
||||
left: 0;
|
||||
border-bottom-color: var(--colors-bg);
|
||||
}
|
||||
.editor-files > button.selected > input {
|
||||
width: 100%;
|
||||
font-size: 14px;
|
||||
font-family: var(--font-face);
|
||||
height: 26px;
|
||||
position: absolute;
|
||||
left: 4px;
|
||||
bottom: -0.5px;
|
||||
outline: none;
|
||||
border: none;
|
||||
color: var(--colors-blue);
|
||||
background-color: transparent;
|
||||
}
|
||||
.editor-files > button.selected > input.invalid-filename {
|
||||
color: var(--colors-red);
|
||||
}
|
||||
.editor-files > button > .editor-closebutton {
|
||||
width: 1.2rem;
|
||||
display: inline-block;
|
||||
color: var(--button-gray-color);
|
||||
font-weight: bold;
|
||||
}
|
||||
.editor-files > button.selected > .editor-closebutton + input {
|
||||
width: calc(100% - 21px);
|
||||
}
|
||||
.editor-files > .editor-addtab {
|
||||
border-color: rgba(0, 0, 0, 0);
|
||||
display: inline-block;
|
||||
line-height: 1rem;
|
||||
margin-left: 0.5rem;
|
||||
padding: 0;
|
||||
}
|
||||
.editor-files .editor-addbutton,
|
||||
.editor-files .editor-uploadbutton {
|
||||
display: inline-block;
|
||||
color: var(--button-gray-color);
|
||||
fill: var(--button-gray-color);
|
||||
background-color: inherit;
|
||||
font-size: 1.2rem;
|
||||
font-weight: bold;
|
||||
padding: 0 0.3rem;
|
||||
}
|
||||
.editor-files .editor-uploadbutton {
|
||||
font-size: 0.7rem;
|
||||
}
|
||||
.editor-files .editor-closebutton:hover,
|
||||
.editor-files .editor-addbutton:hover,
|
||||
.editor-files .editor-uploadbutton:hover {
|
||||
color: var(--button-hover-color);
|
||||
fill: var(--button-hover-color);
|
||||
cursor: pointer;
|
||||
}
|
||||
.editor-container {
|
||||
padding: var(--pad);
|
||||
position: relative;
|
||||
}
|
||||
.editor-container .cm-editor {
|
||||
height: 100%;
|
||||
}
|
||||
.editor-container .cm-editor.cm-focused {
|
||||
outline: none;
|
||||
}
|
||||
.editor-container .cm-editor .cm-scroller {
|
||||
font-family: var(--font-mono-face);
|
||||
font-size: var(--font-mono-size);
|
||||
}
|
||||
.editor-container .cm-gutters {
|
||||
color: #aaa;
|
||||
background-color: var(--colors-bg);
|
||||
border-right: 1px solid #eee;
|
||||
padding-right: 4px;
|
||||
}
|
||||
.editor-container .cm-activeLineGutter {
|
||||
background-color: var(--colors-bg);
|
||||
}
|
||||
.editor-container .cm-tooltip {
|
||||
font-family: var(--font-face);
|
||||
font-size: var(--font-size);
|
||||
}
|
||||
.editor-container .cm-tooltip code {
|
||||
font-family: var(--font-mono-face);
|
||||
font-size: var(--font-mono-size);
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.editor-container .cm-diagnostic {
|
||||
font-family: var(--font-mono-face);
|
||||
font-size: var(--font-mono-size);
|
||||
}
|
||||
.editor-container .cm-signature-signature {
|
||||
font-family: var(--font-mono-face);
|
||||
}
|
||||
.editor-container .docstring {
|
||||
padding: 3px 6px;
|
||||
max-width: 650px;
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
.editor-container .docstring pre {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
.editor-container .docstring h2 {
|
||||
font-size: 1.2em;
|
||||
font-weight: 600;
|
||||
}
|
||||
.shinylive-editor button.code-run-button {
|
||||
border: none;
|
||||
font-size: 0.8rem;
|
||||
padding: 0.2rem 0.5rem;
|
||||
background-color: transparent;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.shinylive-editor .code-run-button:hover {
|
||||
color: var(--button-hover-color);
|
||||
fill: var(--button-hover-color);
|
||||
}
|
||||
.editor-header .code-run-button {
|
||||
align-self: center;
|
||||
color: var(--button-gray-color);
|
||||
fill: var(--button-gray-color);
|
||||
}
|
||||
.shinylive-editor .floating-buttons .code-run-button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
border: 0;
|
||||
margin-top: 5px;
|
||||
margin-right: 5px;
|
||||
opacity: 0;
|
||||
}
|
||||
.shinylive-editor:hover .floating-buttons .code-run-button {
|
||||
color: var(--button-gray-color);
|
||||
fill: var(--button-gray-color);
|
||||
opacity: 1;
|
||||
}
|
||||
.shinylive-editor .floating-buttons .code-run-button:hover {
|
||||
color: var(--button-hover-color);
|
||||
fill: var(--button-hover-color);
|
||||
}
|
||||
|
||||
/* src/Components/Icons.css */
|
||||
.shinylive-icon {
|
||||
display: inline-block;
|
||||
height: 1em;
|
||||
}
|
||||
|
||||
/* src/Components/ShareModal.css */
|
||||
.ShareModal {
|
||||
position: absolute;
|
||||
top: 50px;
|
||||
left: 50px;
|
||||
width: 600px;
|
||||
font-family: var(--font-face);
|
||||
background: white;
|
||||
border: 1px solid #ccc;
|
||||
border-radius: 5px;
|
||||
padding: 8px 14px;
|
||||
transition: 0.4s ease-out;
|
||||
box-shadow: 0.5rem 0.5rem 2rem rgb(0 0 0 / 30%);
|
||||
z-index: 10;
|
||||
}
|
||||
.ShareModal .ShareModal--item {
|
||||
padding-bottom: 10px;
|
||||
}
|
||||
.ShareModal .ShareModal--item .ShareModal--checkbox {
|
||||
margin-left: 1em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.ShareModal .ShareModal--row {
|
||||
display: flex;
|
||||
}
|
||||
.ShareModal .ShareModal--row label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
.ShareModal .ShareModal--row label span {
|
||||
margin-left: 0.3em;
|
||||
}
|
||||
.ShareModal .ShareModal--row .ShareModal--url {
|
||||
display: inline-flex;
|
||||
position: relative;
|
||||
vertical-align: top;
|
||||
width: 100%;
|
||||
}
|
||||
.ShareModal .ShareModal--row .ShareModal--url .ShareModal--urlinput {
|
||||
font-family: var(--font-mono-face);
|
||||
font-size: var(--font-mono-size);
|
||||
width: 100%;
|
||||
margin-right: 12px;
|
||||
}
|
||||
.ShareModal-overlay {
|
||||
opacity: 0.5;
|
||||
background: #000;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: 9;
|
||||
top: 0;
|
||||
left: 0;
|
||||
position: fixed;
|
||||
}
|
39333
docs/shinylive/Editor.js
39333
docs/shinylive/Editor.js
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load diff
|
@ -1,43 +0,0 @@
|
|||
// Shinylive 0.2.3
|
||||
// Copyright 2023 RStudio, PBC
|
||||
|
||||
// src/utils.ts
|
||||
function dirname(path) {
|
||||
if (path === "/" || path === "") {
|
||||
return "";
|
||||
}
|
||||
return path.replace(/[/]?[^/]+[/]?$/, "");
|
||||
}
|
||||
function currentScriptPath() {
|
||||
return new URL(import.meta.url).pathname;
|
||||
}
|
||||
function currentScriptDir() {
|
||||
return dirname(currentScriptPath());
|
||||
}
|
||||
|
||||
// src/load-shinylive-sw.ts
|
||||
var localhostNames = ["localhost", "127.0.0.1", "[::1]"];
|
||||
if (window.location.protocol !== "https:" && !localhostNames.includes(window.location.hostname)) {
|
||||
const errorMessage = "Shinylive uses a Service Worker, which requires either a connection to localhost, or a connection via https.";
|
||||
document.body.innerText = errorMessage;
|
||||
throw Error(errorMessage);
|
||||
}
|
||||
var serviceWorkerDir;
|
||||
var shinyliveMetaTag = document.querySelector(
|
||||
'meta[name="shinylive:serviceworker_dir"]'
|
||||
);
|
||||
if (shinyliveMetaTag !== null) {
|
||||
serviceWorkerDir = shinyliveMetaTag.content;
|
||||
} else {
|
||||
serviceWorkerDir = dirname(currentScriptDir());
|
||||
}
|
||||
serviceWorkerDir = serviceWorkerDir.replace(/\/$/, "");
|
||||
var serviceWorkerPath = serviceWorkerDir + "/shinylive-sw.js";
|
||||
if ("serviceWorker" in navigator) {
|
||||
navigator.serviceWorker.register(serviceWorkerPath, { type: "module" }).then(() => console.log("Service Worker registered")).catch(() => console.log("Service Worker registration failed"));
|
||||
navigator.serviceWorker.ready.then(() => {
|
||||
if (!navigator.serviceWorker.controller) {
|
||||
window.location.reload();
|
||||
}
|
||||
});
|
||||
}
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because one or more lines are too long
|
@ -1,71 +0,0 @@
|
|||
/* Taken from https://www.joshwcomeau.com/css/custom-css-reset/ */
|
||||
|
||||
/*
|
||||
1. Use a more-intuitive box-sizing model.
|
||||
*/
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/*
|
||||
2. Remove default margin
|
||||
*/
|
||||
* {
|
||||
margin: 0;
|
||||
}
|
||||
/*
|
||||
3. Allow percentage-based heights in the application
|
||||
*/
|
||||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
/*
|
||||
Typographic tweaks!
|
||||
4. Add accessible line-height
|
||||
5. Improve text rendering
|
||||
*/
|
||||
body {
|
||||
line-height: 1.5;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
/*
|
||||
6. Improve media defaults
|
||||
*/
|
||||
img,
|
||||
picture,
|
||||
video,
|
||||
canvas,
|
||||
svg {
|
||||
display: block;
|
||||
max-width: 100%;
|
||||
}
|
||||
/*
|
||||
7. Remove built-in form typography styles
|
||||
*/
|
||||
input,
|
||||
button,
|
||||
textarea,
|
||||
select {
|
||||
font: inherit;
|
||||
}
|
||||
/*
|
||||
8. Avoid text overflows
|
||||
*/
|
||||
p,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
/*
|
||||
9. Create a root stacking context
|
||||
*/
|
||||
#root,
|
||||
#__next {
|
||||
isolation: isolate;
|
||||
}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
1
docs/shinylive/webr/esbuild.d.ts
vendored
1
docs/shinylive/webr/esbuild.d.ts
vendored
|
@ -1 +0,0 @@
|
|||
export {};
|
Binary file not shown.
Binary file not shown.
15
docs/shinylive/webr/repl/App.d.ts
vendored
15
docs/shinylive/webr/repl/App.d.ts
vendored
|
@ -1,15 +0,0 @@
|
|||
import { Readline } from 'xterm-readline';
|
||||
import './App.css';
|
||||
export interface TerminalInterface {
|
||||
println: Readline['println'];
|
||||
read: Readline['read'];
|
||||
write: Readline['write'];
|
||||
}
|
||||
export interface FilesInterface {
|
||||
refreshFilesystem: () => Promise<void>;
|
||||
openFileInEditor: (name: string, path: string, readOnly: boolean) => Promise<void>;
|
||||
}
|
||||
export interface PlotInterface {
|
||||
newPlot: () => void;
|
||||
drawImage: (img: ImageBitmap) => void;
|
||||
}
|
26
docs/shinylive/webr/repl/components/Editor.d.ts
vendored
26
docs/shinylive/webr/repl/components/Editor.d.ts
vendored
|
@ -1,26 +0,0 @@
|
|||
import React from 'react';
|
||||
import { WebR } from '../../webR/webr-main';
|
||||
import { EditorState } from '@codemirror/state';
|
||||
import { FilesInterface, TerminalInterface } from '../App';
|
||||
import './Editor.css';
|
||||
export type EditorFile = {
|
||||
name: string;
|
||||
path: string;
|
||||
ref: {
|
||||
editorState: EditorState;
|
||||
scrollTop?: number;
|
||||
scrollLeft?: number;
|
||||
};
|
||||
};
|
||||
export declare function FileTabs({ files, activeFileIdx, setActiveFileIdx, closeFile }: {
|
||||
files: EditorFile[];
|
||||
activeFileIdx: number;
|
||||
setActiveFileIdx: React.Dispatch<React.SetStateAction<number>>;
|
||||
closeFile: (e: React.SyntheticEvent, index: number) => void;
|
||||
}): React.JSX.Element;
|
||||
export declare function Editor({ webR, terminalInterface, filesInterface, }: {
|
||||
webR: WebR;
|
||||
terminalInterface: TerminalInterface;
|
||||
filesInterface: FilesInterface;
|
||||
}): React.JSX.Element;
|
||||
export default Editor;
|
19
docs/shinylive/webr/repl/components/Files.d.ts
vendored
19
docs/shinylive/webr/repl/components/Files.d.ts
vendored
|
@ -1,19 +0,0 @@
|
|||
import React from 'react';
|
||||
import { WebR } from '../../webR/webr-main';
|
||||
import type { FSNode } from '../../webR/webr-main';
|
||||
import { FilesInterface } from '../App';
|
||||
import './Files.css';
|
||||
interface ITreeNode {
|
||||
id: number;
|
||||
name: string;
|
||||
children?: ITreeNode[];
|
||||
metadata?: {
|
||||
[x: string]: string | number | null | undefined;
|
||||
};
|
||||
}
|
||||
export declare function createTreeFromFSNode(fsNode: FSNode): ITreeNode;
|
||||
export declare function Files({ webR, filesInterface, }: {
|
||||
webR: WebR;
|
||||
filesInterface: FilesInterface;
|
||||
}): React.JSX.Element;
|
||||
export default Files;
|
|
@ -1,7 +0,0 @@
|
|||
import React from 'react';
|
||||
import './Plot.css';
|
||||
import { PlotInterface } from '../App';
|
||||
export declare function Plot({ plotInterface, }: {
|
||||
plotInterface: PlotInterface;
|
||||
}): React.JSX.Element;
|
||||
export default Plot;
|
|
@ -1,9 +0,0 @@
|
|||
import React from 'react';
|
||||
import { TerminalInterface } from '../App';
|
||||
import { WebR } from '../../webR/webr-main';
|
||||
import 'xterm/css/xterm.css';
|
||||
export declare function Terminal({ webR, terminalInterface, }: {
|
||||
webR: WebR;
|
||||
terminalInterface: TerminalInterface;
|
||||
}): React.JSX.Element;
|
||||
export default Terminal;
|
11
docs/shinylive/webr/repl/components/utils.d.ts
vendored
11
docs/shinylive/webr/repl/components/utils.d.ts
vendored
|
@ -1,11 +0,0 @@
|
|||
import { Text } from '@codemirror/state';
|
||||
import { EditorView } from '@codemirror/view';
|
||||
export type CursorPosition = {
|
||||
line: number;
|
||||
col: number;
|
||||
};
|
||||
export declare function offsetToPosition(cmDoc: Text, offset: number): CursorPosition;
|
||||
export declare function positionToOffset(cmDoc: Text, pos: CursorPosition): number;
|
||||
export declare function getSelectedText(cmView: EditorView): string;
|
||||
export declare function getCurrentLineText(cmView: EditorView): string;
|
||||
export declare function moveCursorToNextLine(cmView: EditorView): void;
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1 +0,0 @@
|
|||
export {};
|
|
@ -1,42 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||
<fontconfig>
|
||||
<dir>/usr/share/fonts</dir>
|
||||
<dir>/home/web_user/fonts</dir>
|
||||
<cachedir>/var/cache/fontconfig</cachedir>
|
||||
|
||||
<alias>
|
||||
<family>Helvetica</family>
|
||||
<prefer><family>sans-serif</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>Times</family>
|
||||
<prefer><family>serif</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>Courier</family>
|
||||
<prefer><family>monospace</family></prefer>
|
||||
</alias>
|
||||
|
||||
<alias>
|
||||
<family>sans</family>
|
||||
<prefer><family>sans-serif</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>mono</family>
|
||||
<prefer><family>monospace</family></prefer>
|
||||
</alias>
|
||||
|
||||
<alias>
|
||||
<family>sans-serif</family>
|
||||
<prefer><family>Noto Sans</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>serif</family>
|
||||
<prefer><family>Noto Serif</family></prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>monospace</family>
|
||||
<prefer><family>Noto Sans Mono</family></prefer>
|
||||
</alias>
|
||||
</fontconfig>
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,376 +0,0 @@
|
|||
##================================================================##
|
||||
### In longer simulations, aka computer experiments, ###
|
||||
### you may want to ###
|
||||
### 1) catch all errors and warnings (and continue) ###
|
||||
### 2) store the error or warning messages ###
|
||||
### ###
|
||||
### Here's a solution (see R-help mailing list, Dec 9, 2010): ###
|
||||
##================================================================##
|
||||
|
||||
##' Catch *and* save both errors and warnings, and in the case of
|
||||
##' a warning, also keep the computed result.
|
||||
##'
|
||||
##' @title tryCatch both warnings (with value) and errors
|
||||
##' @param expr an \R expression to evaluate
|
||||
##' @return a list with 'value' and 'warning', where
|
||||
##' 'value' may be an error caught.
|
||||
##' @author Martin Maechler;
|
||||
##' Copyright (C) 2010-2023 The R Core Team
|
||||
tryCatch.W.E <- function(expr)
|
||||
{
|
||||
W <- NULL
|
||||
w.handler <- function(w) { # warning handler
|
||||
W <<- w
|
||||
invokeRestart("muffleWarning")
|
||||
}
|
||||
list(value = withCallingHandlers(tryCatch(expr, error = function(e) e),
|
||||
warning = w.handler),
|
||||
warning = W)
|
||||
}
|
||||
|
||||
str( tryCatch.W.E( log( 2 ) ) )
|
||||
str( tryCatch.W.E( log( -1) ) )
|
||||
str( tryCatch.W.E( log("a") ) )
|
||||
|
||||
|
||||
##' @title Catch *all* warnings and the value
|
||||
##' @param expr an \R expression to evaluate
|
||||
##' @return a list with 'value' and 'warnings'
|
||||
##' @author Luke Tierney (2004), R-help post
|
||||
##' https://stat.ethz.ch/pipermail/r-help/2004-June/052132.html
|
||||
withWarnings <- function(expr) {
|
||||
W <- NULL
|
||||
wHandler <- function(w) {
|
||||
W <<- c(W, list(w))
|
||||
invokeRestart("muffleWarning")
|
||||
}
|
||||
val <- withCallingHandlers(expr, warning = wHandler)
|
||||
list(value = val, warnings = W)
|
||||
}
|
||||
|
||||
withWarnings({ warning("first"); warning("2nd"); pi })
|
||||
|
||||
r <- withWarnings({ log(-1) + sqrt(-4); exp(1) })
|
||||
str(r, digits=14)
|
||||
|
||||
##' @title tryCatch *all* warnings and messages, and an error or the final value
|
||||
##' @param expr an \R expression to evaluate
|
||||
##' @return a list with `messages`, `warnings`, and
|
||||
##' `value` which may be an error caught.
|
||||
##' @author Martin Maechler (combining the above)
|
||||
tryCatch_WEMs <- function(expr)
|
||||
{
|
||||
W <- M <- NULL
|
||||
w.handler <- function(w) { # warning handler
|
||||
W <<- c(W, list(w)); invokeRestart("muffleWarning")
|
||||
}
|
||||
m.handler <- function(m) { # message handler
|
||||
M <<- c(M, list(m)); invokeRestart("muffleMessage")
|
||||
}
|
||||
list(value = withCallingHandlers(tryCatch(expr, error = function(e) e),
|
||||
warning = w.handler, message = m.handler),
|
||||
messages = M,
|
||||
warnings = W)
|
||||
}
|
||||
|
||||
f3 <- function(x) {
|
||||
r <- log(-x) + sqrt(-x) # produce warnings when x >= 0
|
||||
if(anyNA(r)) message(sprintf("%d NA's produced by log(.) + sqrt(.)", sum(is.na(r))))
|
||||
r <- exp(-x)
|
||||
if(any(ii <- is.infinite(r))) message(sprintf("Got +/- Inf from x[%s]", deparse(which(ii))))
|
||||
r
|
||||
}
|
||||
|
||||
str( r0 <- tryCatch_WEMs(f3("A")) ) # just an error from '-x'
|
||||
stopifnot(exprs = {
|
||||
inherits (r0$value, "error")
|
||||
identical(r0$value$call, quote(-x))
|
||||
sapply(r0[c("messages","warnings")], is.null)
|
||||
})
|
||||
|
||||
(x <- c(-1:1, (-1:1)/0))
|
||||
str( rI <- tryCatch_WEMs(f3(x) ))
|
||||
stopifnot(exprs = {
|
||||
identical(lengths(rI), c(value = length(x), messages = 2L, warnings = 2L))
|
||||
rI$value[4] == Inf
|
||||
all.equal(rI$value, exp(-x))
|
||||
length(rI$messages) == 2; sapply(rI$messages, inherits, what="message")
|
||||
length(rI$warnings) == 2; sapply(rI$warnings, inherits, what="warning")
|
||||
})
|
||||
|
||||
|
||||
# Copyright (C) 1997-2018 The R Core Team
|
||||
|
||||
### The Base package has a couple of non-functions:
|
||||
##
|
||||
## These may be in "base" when they exist; discount them here
|
||||
## (see also 'dont.mind' in checkConflicts() inside library()) :
|
||||
xtraBaseNms <- c("last.dump", "last.warning", ".Last.value",
|
||||
".Random.seed", ".Traceback")
|
||||
ls.base <- Filter(function(nm) is.na(match(nm, xtraBaseNms)),
|
||||
ls("package:base", all=TRUE))
|
||||
base.is.f <- sapply(ls.base, function(x) is.function(get(x)))
|
||||
cat("\nNumber of all base objects:\t", length(ls.base),
|
||||
"\nNumber of functions from these:\t", sum(base.is.f),
|
||||
"\n\t starting with 'is.' :\t ",
|
||||
sum(grepl("^is\\.", ls.base[base.is.f])), "\n", sep = "")
|
||||
## R ver.| #{is*()}
|
||||
## ------+---------
|
||||
## 0.14 : 31
|
||||
## 0.50 : 33
|
||||
## 0.60 : 34
|
||||
## 0.63 : 37
|
||||
## 1.0.0 : 38
|
||||
## 1.3.0 : 41
|
||||
## 1.6.0 : 45
|
||||
## 2.0.0 : 45
|
||||
## 2.7.0 : 48
|
||||
## 3.0.0 : 49
|
||||
if(interactive()) {
|
||||
nonDots <- function(nm) substr(nm, 1L, 1L) != "."
|
||||
cat("Base non-functions not starting with \".\":\n")
|
||||
Filter(nonDots, ls.base[!base.is.f])
|
||||
}
|
||||
|
||||
## Do we have a method (probably)?
|
||||
is.method <- function(fname) {
|
||||
isFun <- function(name) (exists(name, mode="function") &&
|
||||
is.na(match(name, c("is", "as"))))
|
||||
np <- length(sp <- strsplit(fname, split = "\\.")[[1]])
|
||||
if(np <= 1 )
|
||||
FALSE
|
||||
else
|
||||
(isFun(paste(sp[1:(np-1)], collapse = '.')) ||
|
||||
(np >= 3 &&
|
||||
isFun(paste(sp[1:(np-2)], collapse = '.'))))
|
||||
}
|
||||
|
||||
is.ALL <- function(obj, func.names = ls(pos=length(search())),
|
||||
not.using = c("is.single", "is.real", "is.loaded",
|
||||
"is.empty.model", "is.R", "is.element", "is.unsorted"),
|
||||
true.only = FALSE, debug = FALSE)
|
||||
{
|
||||
## Purpose: show many 'attributes' of R object __obj__
|
||||
## -------------------------------------------------------------------------
|
||||
## Arguments: obj: any R object
|
||||
## -------------------------------------------------------------------------
|
||||
## Author: Martin Maechler, Date: 6 Dec 1996
|
||||
|
||||
is.fn <- func.names[substring(func.names,1,3) == "is."]
|
||||
is.fn <- is.fn[substring(is.fn,1,7) != "is.na<-"]
|
||||
use.fn <- is.fn[ is.na(match(is.fn, not.using))
|
||||
& ! sapply(is.fn, is.method) ]
|
||||
|
||||
r <- if(true.only) character(0)
|
||||
else structure(vector("list", length= length(use.fn)), names= use.fn)
|
||||
for(f in use.fn) {
|
||||
if(any(f == c("is.na", "is.finite"))) {
|
||||
if(!is.list(obj) && !is.vector(obj) && !is.array(obj)) {
|
||||
if(!true.only) r[[f]] <- NA
|
||||
next
|
||||
}
|
||||
}
|
||||
if(any(f == c("is.nan", "is.finite", "is.infinite"))) {
|
||||
if(!is.atomic(obj)) {
|
||||
if(!true.only) r[[f]] <- NA
|
||||
next
|
||||
}
|
||||
}
|
||||
if(debug) cat(f,"")
|
||||
fn <- get(f)
|
||||
rr <- if(is.primitive(fn) || length(formals(fn))>0) fn(obj) else fn()
|
||||
if(!is.logical(rr)) cat("f=",f," --- rr is NOT logical = ",rr,"\n")
|
||||
##if(1!=length(rr)) cat("f=",f," --- rr NOT of length 1; = ",rr,"\n")
|
||||
if(true.only && length(rr)==1 && !is.na(rr) && rr) r <- c(r, f)
|
||||
else if(!true.only) r[[f]] <- rr
|
||||
}
|
||||
if(debug)cat("\n")
|
||||
if(is.list(r)) structure(r, class = "isList") else r
|
||||
}
|
||||
|
||||
print.isList <- function(x, ..., verbose = getOption("verbose"))
|
||||
{
|
||||
## Purpose: print METHOD for `isList' objects
|
||||
## ------------------------------------------------
|
||||
## Author: Martin Maechler, Date: 12 Mar 1997
|
||||
if(is.list(x)) {
|
||||
if(verbose) cat("print.isList(): list case (length=",length(x),")\n")
|
||||
nm <- format(names(x))
|
||||
rr <- lapply(x, stats::symnum, na = "NA")
|
||||
for(i in seq_along(x)) cat(nm[i],":",rr[[i]],"\n", ...)
|
||||
} else NextMethod("print", ...)
|
||||
}
|
||||
|
||||
|
||||
is.ALL(NULL)
|
||||
##fails: is.ALL(NULL, not.using = c("is.single", "is.loaded"))
|
||||
is.ALL(NULL, true.only = TRUE)
|
||||
all.equal(NULL, pairlist())
|
||||
## list() != NULL == pairlist() :
|
||||
is.ALL(list(), true.only = TRUE)
|
||||
|
||||
(pl <- is.ALL(pairlist(1, list(3,"A")), true.only = TRUE))
|
||||
(ll <- is.ALL( list(1,pairlist(3,"A")), true.only = TRUE))
|
||||
all.equal(pl[pl != "is.pairlist"],
|
||||
ll[ll != "is.vector"])## TRUE
|
||||
|
||||
is.ALL(1:5)
|
||||
is.ALL(array(1:24, 2:4))
|
||||
is.ALL(1 + 3)
|
||||
e13 <- expression(1 + 3)
|
||||
is.ALL(e13)
|
||||
is.ALL(substitute(expression(a + 3), list(a=1)), true.only = TRUE)
|
||||
is.ALL(y ~ x) #--> NA for is.na & is.finite
|
||||
|
||||
is0 <- is.ALL(numeric(0))
|
||||
is0.ok <- 1 == (lis0 <- sapply(is0, length))
|
||||
is0[!is0.ok]
|
||||
is0 <- unlist(is0)
|
||||
is0
|
||||
ispi <- unlist(is.ALL(pi))
|
||||
all(ispi[is0.ok] == is0)
|
||||
|
||||
is.ALL(numeric(0), true=TRUE)
|
||||
is.ALL(array(1,1:3), true=TRUE)
|
||||
is.ALL(cbind(1:3), true=TRUE)
|
||||
|
||||
is.ALL(structure(1:7, names = paste("a",1:7,sep="")))
|
||||
is.ALL(structure(1:7, names = paste("a",1:7,sep="")), true.only = TRUE)
|
||||
|
||||
x <- 1:20 ; y <- 5 + 6*x + rnorm(20)
|
||||
lm.xy <- lm(y ~ x)
|
||||
is.ALL(lm.xy)
|
||||
is.ALL(structure(1:7, names = paste("a",1:7,sep="")))
|
||||
is.ALL(structure(1:7, names = paste("a",1:7,sep="")), true.only = TRUE)
|
||||
# Copyright (C) 1997-2005 The R Core Team
|
||||
|
||||
## Adaptive integration: Venables and Ripley pp. 105-110
|
||||
## This is the basic integrator.
|
||||
|
||||
area <- function(f, a, b, ..., fa = f(a, ...), fb = f(b, ...), limit
|
||||
= 10, eps = 1.e-5)
|
||||
{
|
||||
h <- b - a
|
||||
d <- (a + b)/2
|
||||
fd <- f(d, ...)
|
||||
a1 <- ((fa + fb) * h)/2
|
||||
a2 <- ((fa + 4 * fd + fb) * h)/6
|
||||
if(abs(a1 - a2) < eps)
|
||||
return(a2)
|
||||
if(limit == 0) {
|
||||
warning(paste("iteration limit reached near x = ",
|
||||
d))
|
||||
return(a2)
|
||||
}
|
||||
area(f, a, d, ..., fa = fa, fb = fd, limit = limit - 1,
|
||||
eps = eps) + area(f, d, b, ..., fa = fd, fb =
|
||||
fb, limit = limit - 1, eps = eps)
|
||||
}
|
||||
|
||||
|
||||
## The function to be integrated
|
||||
|
||||
fbeta <- function(x, alpha, beta)
|
||||
{
|
||||
x^(alpha - 1) * (1 - x)^(beta - 1)
|
||||
}
|
||||
|
||||
|
||||
## Compute the approximate integral, the exact integral and the error
|
||||
|
||||
b0 <- area(fbeta, 0, 1, alpha=3.5, beta=1.5)
|
||||
b1 <- exp(lgamma(3.5) + lgamma(1.5) - lgamma(5))
|
||||
c(b0, b1, b0-b1)
|
||||
|
||||
|
||||
## Modify the function so that it records where it was evaluated
|
||||
|
||||
fbeta.tmp <- function (x, alpha, beta)
|
||||
{
|
||||
val <<- c(val, x)
|
||||
x^(alpha - 1) * (1 - x)^(beta - 1)
|
||||
}
|
||||
|
||||
|
||||
## Recompute and plot the evaluation points.
|
||||
|
||||
val <- NULL
|
||||
b0 <- area(fbeta.tmp, 0, 1, alpha=3.5, beta=1.5)
|
||||
plot(val, fbeta(val, 3.5, 1.5), pch=0)
|
||||
|
||||
|
||||
## Better programming style -- renaming the function will have no effect.
|
||||
## The use of "Recall" as in V+R is VERY black magic. You can get the
|
||||
## same effect transparently by supplying a wrapper function.
|
||||
## This is the approved Abelson+Sussman method.
|
||||
|
||||
area <- function(f, a, b, ..., limit=10, eps=1e-5) {
|
||||
area2 <- function(f, a, b, ..., fa = f(a, ...), fb = f(b, ...),
|
||||
limit = limit, eps = eps) {
|
||||
h <- b - a
|
||||
d <- (a + b)/2
|
||||
fd <- f(d, ...)
|
||||
a1 <- ((fa + fb) * h)/2
|
||||
a2 <- ((fa + 4 * fd + fb) * h)/6
|
||||
if(abs(a1 - a2) < eps)
|
||||
return(a2)
|
||||
if(limit == 0) {
|
||||
warning(paste("iteration limit reached near x =", d))
|
||||
return(a2)
|
||||
}
|
||||
area2(f, a, d, ..., fa = fa, fb = fd, limit = limit - 1,
|
||||
eps = eps) + area2(f, d, b, ..., fa = fd, fb =
|
||||
fb, limit = limit - 1, eps = eps)
|
||||
}
|
||||
area2(f, a, b, ..., limit=limit, eps=eps)
|
||||
}
|
||||
|
||||
## Here is a little example which shows a fundamental difference between
|
||||
## R and S. It is a little example from Abelson and Sussman which models
|
||||
## the way in which bank accounts work. It shows how R functions can
|
||||
## encapsulate state information.
|
||||
##
|
||||
## When invoked, "open.account" defines and returns three functions
|
||||
## in a list. Because the variable "total" exists in the environment
|
||||
## where these functions are defined they have access to its value.
|
||||
## This is even true when "open.account" has returned. The only way
|
||||
## to access the value of "total" is through the accessor functions
|
||||
## withdraw, deposit and balance. Separate accounts maintain their
|
||||
## own balances.
|
||||
##
|
||||
## This is a very nifty way of creating "closures" and a little thought
|
||||
## will show you that there are many ways of using this in statistics.
|
||||
|
||||
# Copyright (C) 1997-8 The R Core Team
|
||||
|
||||
open.account <- function(total) {
|
||||
|
||||
list(
|
||||
deposit = function(amount) {
|
||||
if(amount <= 0)
|
||||
stop("Deposits must be positive!\n")
|
||||
total <<- total + amount
|
||||
cat(amount,"deposited. Your balance is", total, "\n\n")
|
||||
},
|
||||
withdraw = function(amount) {
|
||||
if(amount > total)
|
||||
stop("You don't have that much money!\n")
|
||||
total <<- total - amount
|
||||
cat(amount,"withdrawn. Your balance is", total, "\n\n")
|
||||
},
|
||||
balance = function() {
|
||||
cat("Your balance is", total, "\n\n")
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
ross <- open.account(100)
|
||||
robert <- open.account(200)
|
||||
|
||||
ross$withdraw(30)
|
||||
ross$balance()
|
||||
robert$balance()
|
||||
|
||||
ross$deposit(50)
|
||||
ross$balance()
|
||||
try(ross$withdraw(500)) # no way..
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/error.catching.R","start":0,"end":3367},{"filename":"/is.things.R","start":3367,"end":8165},{"filename":"/recursion.R","start":8165,"end":10280},{"filename":"/scoping.R","start":10280,"end":11840}],"remote_package_size":11840}
|
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":35462},{"filename":"/aliases.rds","start":35462,"end":48080},{"filename":"/base.rdb","start":48080,"end":2366742},{"filename":"/base.rdx","start":2366742,"end":2375985},{"filename":"/paths.rds","start":2375985,"end":2379177}],"remote_package_size":2379177}
|
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":151052},{"filename":"/R.css","start":151052,"end":152896}],"remote_package_size":152896}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":174},{"filename":"/aliases.rds","start":174,"end":377},{"filename":"/compiler.rdb","start":377,"end":9101},{"filename":"/compiler.rdx","start":9101,"end":9267},{"filename":"/paths.rds","start":9267,"end":9407}],"remote_package_size":9407}
|
|
@ -1,173 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>R: The R Compiler Package</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<link rel="stylesheet" type="text/css" href="R.css" />
|
||||
</head><body><div class="container">
|
||||
<h1> The R Compiler Package
|
||||
<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
|
||||
</h1>
|
||||
<hr/>
|
||||
<div style="text-align: center;">
|
||||
<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
|
||||
<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
|
||||
</div><h2>Documentation for package ‘compiler’ version 4.3.0</h2>
|
||||
|
||||
<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Help Pages</h2>
|
||||
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="compile.html">cmpfile</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">cmpfun</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">compile</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">compilePKGS</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">disassemble</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">enableJIT</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">getCompilerOption</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">loadcmp</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="compile.html">setCompilerOptions</a></td>
|
||||
<td>Byte Code Compiler</td></tr>
|
||||
</table>
|
||||
</div></body></html>
|
||||
@media screen {
|
||||
.container {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.rimage img { /* from knitr - for examples and demos */
|
||||
width: 96%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.katex { font-size: 1.1em; }
|
||||
|
||||
code {
|
||||
color: inherit;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.4;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background: white;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
background: white;
|
||||
color: rgb(50%, 0%, 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
background: white;
|
||||
color: rgb(55%, 55%, 55%);
|
||||
font-family: monospace;
|
||||
font-size: 1.4em; /* x-large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h4 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h5 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
h6 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
img.toplogo {
|
||||
width: 4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.arrow {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
span.acronym {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
span.env {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.option{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.pkg {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.samp{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.vignettes a:hover {
|
||||
background: rgb(85%, 85%, 85%);
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
span.rlang {
|
||||
font-family: Courier New, Courier;
|
||||
color: #666666;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":1857},{"filename":"/R.css","start":1857,"end":3701}],"remote_package_size":3701}
|
|
@ -1,845 +0,0 @@
|
|||
##
|
||||
## Assignment tests
|
||||
##
|
||||
|
||||
library(compiler)
|
||||
|
||||
## Local assignment
|
||||
|
||||
### symbol
|
||||
x <- 1
|
||||
eval(compile(quote(x <- 2)))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### closure
|
||||
`f<-` <- function(x, i, value) { x[i] <- value; x }
|
||||
x <- 1
|
||||
eval(compile(quote(f(x, 1) <- 2)))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### SPECIAL
|
||||
`f<-` <- `[<-`
|
||||
x <- 1
|
||||
eval(compile(quote(f(x, 1) <- 2)))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### BUILTIN
|
||||
`f<-` <- `names<-`
|
||||
x <- 1
|
||||
eval(compile(quote(f(x) <- "foo")))
|
||||
stopifnot(identical(x, structure(1, names = "foo")))
|
||||
|
||||
## Super assignment
|
||||
|
||||
### symbol
|
||||
x <- 1
|
||||
eval(compile(quote((function() x <<- 2)())))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### closure
|
||||
`f<-` <- function(x, i, value) { x[i] <- value; x }
|
||||
x <- 1
|
||||
eval(compile(quote((function() f(x, 1) <<- 2)())))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### SPECIAL
|
||||
`f<-` <- `[<-`
|
||||
x <- 1
|
||||
eval(compile(quote((function() f(x, 1) <<- 2)())))
|
||||
stopifnot(x == 2)
|
||||
|
||||
### BUILTIN
|
||||
`f<-` <- `names<-`
|
||||
x <- 1
|
||||
eval(compile(quote((function() f(x) <<- "foo")())))
|
||||
stopifnot(identical(x, structure(1, names = "foo")))
|
||||
|
||||
## Dollargets
|
||||
|
||||
### Default
|
||||
x <- list(a = 1)
|
||||
eval(compile(quote(x$a <- 2)))
|
||||
stopifnot(identical(x, list(a = 2)))
|
||||
|
||||
### Dispatch
|
||||
x <- structure(list(a = 1), class = "foo")
|
||||
y <- NULL
|
||||
`$<-.foo` <- function(x, tag, value) { y <<- list(tag, value); x }
|
||||
eval(compile(quote(x$a <- 2)))
|
||||
stopifnot(identical(y, list("a", 2)))
|
||||
|
||||
## Subassign
|
||||
|
||||
### Default
|
||||
x <- 1
|
||||
eval(compile(quote(x[1] <- 2)))
|
||||
stopifnot(identical(x, 2))
|
||||
|
||||
### Dispatching
|
||||
x <- structure(list(NULL), class = "foo")
|
||||
y <- NULL
|
||||
`[<-.foo` <- function(x, k, value) { y <<- rep(value, k); x }
|
||||
eval(compile(quote(x[2] <- 3)))
|
||||
stopifnot(identical(y, rep(3, 2)))
|
||||
|
||||
#### Missing args
|
||||
x <- c(1, 2, 3)
|
||||
eval(compile(quote(x[] <- c(4, 5, 6))))
|
||||
stopifnot(identical(x, c(4, 5, 6)))
|
||||
|
||||
### Named args
|
||||
x <- structure(list(NULL), class = "foo")
|
||||
y <- NULL
|
||||
`[<-.foo` <- function(x, k, value) { y <<- names(sys.call()[-1]); x }
|
||||
eval(compile(quote(x[k = 2] <- 3)))
|
||||
stopifnot(identical(y, c("", "k", "value")))
|
||||
|
||||
## Subassign2
|
||||
|
||||
### Default
|
||||
x <- list(NULL)
|
||||
eval(compile(quote(x[[1]] <- list(1))))
|
||||
stopifnot(identical(x, list(list(1))))
|
||||
|
||||
### Dispatching
|
||||
x <- structure(list(), class = "foo")
|
||||
y <- 1
|
||||
`[[<-.foo` <- function(x, i, value) { y[i] <<- value; x }
|
||||
eval(compile(quote(x[[1]] <- 3)))
|
||||
stopifnot(identical(y, 3))
|
||||
|
||||
## Nested assignments
|
||||
x <- list(a = list(b = 1))
|
||||
eval(compile(quote(x$a$b <- 2)))
|
||||
stopifnot(identical(x, list(a = list(b = 2))))
|
||||
|
||||
x <- list(1, list(2))
|
||||
eval(compile(quote(x[[1]][] <- 2)))
|
||||
eval(compile(quote(x[[2]][[1]] <- 3)))
|
||||
stopifnot(identical(x, list(2, list(3))))
|
||||
|
||||
|
||||
## checkAssign
|
||||
checkAssign <- compiler:::checkAssign
|
||||
cenv <- compiler:::makeCenv(.GlobalEnv)
|
||||
cntxt <- compiler:::make.toplevelContext(cenv, list(suppressAll = TRUE))
|
||||
stopifnot(identical(checkAssign(quote(x <- 1), cntxt), TRUE))
|
||||
stopifnot(identical(checkAssign(quote("x" <- 1), cntxt), TRUE))
|
||||
stopifnot(identical(checkAssign(quote(3 <- 1), cntxt), FALSE))
|
||||
stopifnot(identical(checkAssign(quote(f(x) <- 1), cntxt), TRUE))
|
||||
stopifnot(identical(checkAssign(quote((f())(x) <- 1), cntxt), FALSE))
|
||||
stopifnot(identical(checkAssign(quote(f(g(x)) <- 1), cntxt), TRUE))
|
||||
stopifnot(identical(checkAssign(quote(f(g("x")) <- 1), cntxt), FALSE))
|
||||
|
||||
|
||||
## flattenPlace
|
||||
flattenPlace <- compiler:::flattenPlace
|
||||
stopifnot(identical(flattenPlace(quote(f(g(h(x, k), j), i)))$places,
|
||||
list(quote(f(`*tmp*`, i)),
|
||||
quote(g(`*tmp*`, j)),
|
||||
quote(h(`*tmp*`, k)))))
|
||||
stopifnot(identical(flattenPlace(quote(f(g(h(x, k), j), i)))$origplaces,
|
||||
list(quote(f(g(h(x, k), j), i)),
|
||||
quote(g(h(x, k), j)),
|
||||
quote(h(x, k)))))
|
||||
|
||||
## getAssignFun
|
||||
getAssignFun <- compiler:::getAssignFun
|
||||
stopifnot(identical(getAssignFun(quote(f)), quote(`f<-`)))
|
||||
stopifnot(identical(getAssignFun("f"), NULL))
|
||||
stopifnot(identical(getAssignFun(quote(f(x))), NULL))
|
||||
stopifnot(identical(getAssignFun(quote(base::diag)), quote(base::`diag<-`)))
|
||||
stopifnot(identical(getAssignFun(quote(base:::diag)), quote(base:::`diag<-`)))
|
||||
library(compiler)
|
||||
|
||||
options(keep.source=TRUE)
|
||||
|
||||
## very minimal
|
||||
x <- 2
|
||||
stopifnot(eval(compile(quote(x + 1))) == 3)
|
||||
|
||||
## simple code generation
|
||||
checkCode <- function(expr, code, optimize = 2) {
|
||||
v <- compile(expr, options = list(optimize = optimize))
|
||||
d <- .Internal(disassemble(v))[[2]][-1]
|
||||
dd <- as.integer(eval(substitute(code), getNamespace("compiler")))
|
||||
identical(d, dd)
|
||||
}
|
||||
x <- 2
|
||||
stopifnot(checkCode(quote(x + 1),
|
||||
c(GETVAR.OP, 1L,
|
||||
LDCONST.OP, 2L,
|
||||
ADD.OP, 0L,
|
||||
RETURN.OP)))
|
||||
f <- function(x) x
|
||||
checkCode(quote({f(1); f(2)}),
|
||||
c(GETFUN.OP, 1L,
|
||||
PUSHCONSTARG.OP, 3L,
|
||||
CALL.OP, 4L,
|
||||
POP.OP,
|
||||
GETFUN.OP, 1L,
|
||||
PUSHCONSTARG.OP, 6L,
|
||||
CALL.OP, 7L,
|
||||
RETURN.OP))
|
||||
|
||||
|
||||
## names and ... args
|
||||
f <- function(...) list(...)
|
||||
stopifnot(identical(f(1, 2), cmpfun(f)(1, 2)))
|
||||
|
||||
f <- function(...) list(x = ...)
|
||||
stopifnot(identical(f(1, 2), cmpfun(f)(1, 2)))
|
||||
|
||||
|
||||
## substitute and argument constant folding
|
||||
f <- function(x) substitute(x)
|
||||
g <- function() f(1 + 2)
|
||||
v1 <- g()
|
||||
f <- cmpfun(f)
|
||||
g <- cmpfun(g)
|
||||
v2 <- g()
|
||||
stopifnot(identical(v1, v2))
|
||||
|
||||
|
||||
## simple loops
|
||||
sr <- function(x) {
|
||||
n <- length(x)
|
||||
i <- 1
|
||||
s <- 0
|
||||
repeat {
|
||||
if (i > n) break
|
||||
s <- s + x[i]
|
||||
i <- i + 1
|
||||
}
|
||||
s
|
||||
}
|
||||
sw <- function(x) {
|
||||
n <- length(x)
|
||||
i <- 1
|
||||
s <- 0
|
||||
while (i <= n) {
|
||||
s <- s + x[i]
|
||||
i <- i + 1
|
||||
}
|
||||
s
|
||||
}
|
||||
sf <- function(x) {
|
||||
s <- 0
|
||||
for (y in x)
|
||||
s <- s + y
|
||||
s
|
||||
}
|
||||
src <- cmpfun(sr)
|
||||
swc <- cmpfun(sw)
|
||||
sfc <- cmpfun(sf)
|
||||
x <- 1 : 5
|
||||
stopifnot(src(x) == sr(x))
|
||||
stopifnot(swc(x) == sw(x))
|
||||
stopifnot(sfc(x) == sf(x))
|
||||
|
||||
|
||||
## Check that the handlers have been associated with the correct package
|
||||
h <- ls(compiler:::inlineHandlers, all.names = TRUE)
|
||||
p <- sub("package:", "", sapply(h, find))
|
||||
pp <- sapply(h, function(n) get(n, compiler:::inlineHandlers)$package)
|
||||
# stopifnot(identical(p, pp))
|
||||
|
||||
|
||||
## Check assumption about simple .Internals
|
||||
## These are .External calls now.
|
||||
## stopifnot(all(sapply(compiler:::safeStatsInternals,
|
||||
## function(f)
|
||||
## compiler:::is.simpleInternal(get(f, "package:stats")))))
|
||||
|
||||
stopifnot(all(sapply(compiler:::safeBaseInternals,
|
||||
function(f)
|
||||
compiler:::is.simpleInternal(get(f, "package:base")))))
|
||||
|
||||
library(compiler)
|
||||
|
||||
##
|
||||
## Test code for constant folding
|
||||
##
|
||||
|
||||
makeCenv <- compiler:::makeCenv
|
||||
checkConst <- compiler:::checkConst
|
||||
constantFoldSym <- compiler:::constantFoldSym
|
||||
constantFold <- compiler:::constantFold
|
||||
|
||||
## using a global environment
|
||||
ce <- makeCenv(.GlobalEnv)
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)),
|
||||
checkConst(base::pi)))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)),
|
||||
checkConst(1 + 2)))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)),
|
||||
checkConst(1 + 2)))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)),
|
||||
checkConst(sqrt(2))))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)),
|
||||
NULL))
|
||||
|
||||
## using a namespace environment
|
||||
ce <- makeCenv(getNamespace("stats"))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 3)),
|
||||
list(value = base::pi)))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 2)),
|
||||
list(value = base::pi)))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 1)),
|
||||
checkConst(base::pi)))
|
||||
stopifnot(identical(constantFoldSym(quote(pi), list(env = ce, optimize = 0)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 3, env = ce)),
|
||||
checkConst(1 + 2)))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 2, env = ce)),
|
||||
checkConst(1 + 2)))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 1, env = ce)),
|
||||
checkConst(1 + 2)))
|
||||
stopifnot(identical(constantFold(quote(1 + 2), list(optimize = 0, env = ce)),
|
||||
NULL))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 3, env = ce)),
|
||||
checkConst(sqrt(2))))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 2, env = ce)),
|
||||
checkConst(sqrt(2))))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 1, env = ce)),
|
||||
checkConst(sqrt(2))))
|
||||
stopifnot(identical(constantFold(quote(sqrt(2)), list(optimize = 0, env = ce)),
|
||||
NULL))
|
||||
library(compiler)
|
||||
|
||||
# set to TRUE for debugging
|
||||
only.print <- FALSE
|
||||
|
||||
testError <- function(expr, handler) {
|
||||
err <- tryCatch(expr, error = handler)
|
||||
stopifnot(identical(err, TRUE))
|
||||
}
|
||||
|
||||
testWarning <- function(expr, handler) {
|
||||
warn <- tryCatch(expr, warning = handler)
|
||||
stopifnot(identical(warn, TRUE))
|
||||
}
|
||||
|
||||
w <- function(expr, call = substitute(expr)) {
|
||||
if (only.print)
|
||||
testWarning(expr = expr, handler = function(e) {
|
||||
cat("WARNING-MESSAGE: \"", e$message, "\"\nWARNING-CALL: ", deparse(e$call), "\n", sep="")
|
||||
TRUE
|
||||
})
|
||||
else
|
||||
testWarning(expr = expr, handler = function(e) {
|
||||
stopifnot(identical(e$call, call))
|
||||
TRUE
|
||||
})
|
||||
}
|
||||
|
||||
e <- function(expr, call = substitute(expr)) {
|
||||
if (only.print)
|
||||
testError(expr = expr, handler = function(e) {
|
||||
cat("ERROR-MESSAGE: \"", e$message, "\"\nERROR-CALL: ", deparse(e$call), "\n", sep="")
|
||||
TRUE
|
||||
})
|
||||
else
|
||||
testError(expr = expr, handler = function(e) {
|
||||
stopifnot(identical(e$call, call))
|
||||
TRUE
|
||||
})
|
||||
}
|
||||
|
||||
f <- function(x = 1:2,
|
||||
y = -1,
|
||||
z = c(a=1, b=2, c=2, d=3),
|
||||
u = list(inner = c(a=1,b=2,c=3,d=4)),
|
||||
v = list(),
|
||||
...) {
|
||||
|
||||
|
||||
w(x[1:3] <- 11:12)
|
||||
# quote(`[<-`(x, 1:3, value = 11:12))
|
||||
w(min(...))
|
||||
w(sqrt(y))
|
||||
|
||||
e(names(z[1:2]) <- c("X", "Y", "Z"))
|
||||
# quote(`names<-`(z[1:2], value = c("X", "Y", "Z"))
|
||||
e(names(z[c(-1,1)]) <- c("X", "Y", "Z"),
|
||||
# quote(z[c(-1, 1)])) <=== this would be nice, but not possible at the moment
|
||||
quote(`*tmp*`[c(-1, 1)]))
|
||||
w(names(u$inner)[2:4] <- v[1:2] <- c("X", "Y", "Z", "U")[1:2])
|
||||
# quote(`[<-`(names(u$inner), 2:4, value = v[1:2] <- c("X", "Y", "Z", "U")[1:2]))
|
||||
|
||||
##_ Not anymore, as stopifnot() massages its error/warning message:
|
||||
##_ e(stopifnot(is.numeric(dummy)))
|
||||
}
|
||||
|
||||
old=options()
|
||||
|
||||
oldoptimize <- getCompilerOption("optimize")
|
||||
oldjit <- enableJIT(3)
|
||||
|
||||
for (opt in 2:3) {
|
||||
setCompilerOptions(optimize=opt)
|
||||
f()
|
||||
}
|
||||
|
||||
## test that AST and compiler errors/warnings agree
|
||||
|
||||
enableJIT(0)
|
||||
testexpr <- function(fun) {
|
||||
resast <- tryCatch(fun(), error = function(e) e, warning = function(e) e)
|
||||
cfun <- cmpfun(fun)
|
||||
rescmp <- tryCatch(cfun(), error = function(e) e, warning = function(e) e)
|
||||
|
||||
show(resast)
|
||||
show(rescmp)
|
||||
|
||||
stopifnot(identical(resast, rescmp))
|
||||
}
|
||||
|
||||
testexpr(function() { dummy()$e })
|
||||
testexpr(function() { beta(-1, NULL) })
|
||||
testexpr(function() { inherits(1, log) })
|
||||
|
||||
enableJIT(oldjit)
|
||||
setCompilerOptions(optimize = oldoptimize)
|
||||
|
||||
library(compiler)
|
||||
|
||||
##
|
||||
## Tests for findHomeNS()
|
||||
##
|
||||
|
||||
findHomeNS <- compiler:::findHomeNS
|
||||
|
||||
## return value for an undefinded variable should be NULL
|
||||
stopifnot(is.null(findHomeNS("foo", getNamespace("stats"))))
|
||||
stopifnot(is.null(findHomeNS("foo", parent.env(getNamespace("stats")))))
|
||||
stopifnot(is.null(findHomeNS("foo", getNamespace("base"))))
|
||||
|
||||
## + is found in .BaseNamespaceEnv for stats or base
|
||||
stopifnot(identical(findHomeNS("+", getNamespace("stats")),
|
||||
.BaseNamespaceEnv))
|
||||
stopifnot(identical(findHomeNS("+", parent.env(getNamespace("stats"))),
|
||||
.BaseNamespaceEnv))
|
||||
stopifnot(identical(findHomeNS("+", getNamespace("base")),
|
||||
.BaseNamespaceEnv))
|
||||
|
||||
## dnorm is defined in stats
|
||||
stopifnot(identical(findHomeNS("dnorm", getNamespace("stats")),
|
||||
getNamespace("stats")))
|
||||
stopifnot(identical(findHomeNS("dnorm", parent.env(getNamespace("stats"))),
|
||||
getNamespace("stats")))
|
||||
stopifnot(is.null(findHomeNS("dnorm", getNamespace("base"))))
|
||||
|
||||
## par is available via the stats namespace since stats imports graphics
|
||||
stopifnot(identical(findHomeNS("par", getNamespace("stats")),
|
||||
getNamespace("graphics")))
|
||||
stopifnot(identical(findHomeNS("par", parent.env(getNamespace("stats"))),
|
||||
getNamespace("graphics")))
|
||||
stopifnot(is.null(findHomeNS("par", getNamespace("base"))))
|
||||
|
||||
## palette is one of a small set of selective imports from grDevices
|
||||
stopifnot(identical(findHomeNS("palette", getNamespace("stats")),
|
||||
getNamespace("grDevices")))
|
||||
stopifnot(identical(findHomeNS("palette", parent.env(getNamespace("stats"))),
|
||||
getNamespace("grDevices")))
|
||||
stopifnot(is.null(findHomeNS("palette", getNamespace("base"))))
|
||||
|
||||
|
||||
##
|
||||
## Tests for getAssignedVar
|
||||
##
|
||||
|
||||
getAssignedVar <- compiler:::getAssignedVar
|
||||
stopifnot(identical(getAssignedVar(quote("v"<-x)), "v"))
|
||||
stopifnot(identical(getAssignedVar(quote(v<-x)), "v"))
|
||||
stopifnot(identical(getAssignedVar(quote(f(v)<-x)), "v"))
|
||||
stopifnot(identical(getAssignedVar(quote(f(g(v,2),1)<-x)), "v"))
|
||||
|
||||
|
||||
##
|
||||
## Tests for findLocals
|
||||
##
|
||||
|
||||
findLocals <- compiler:::findLocals
|
||||
cenv <- compiler:::makeCenv(.GlobalEnv)
|
||||
cntxt <- compiler:::make.toplevelContext(cenv, NULL)
|
||||
|
||||
stopifnot(identical(findLocals(quote(x<-1), cntxt), "x"))
|
||||
stopifnot(identical(findLocals(quote(f(x)<-1), cntxt), "x"))
|
||||
stopifnot(identical(findLocals(quote(f(g(x,2),1)<-1), cntxt), "x"))
|
||||
stopifnot(identical(findLocals(quote(x<-y<-1), cntxt), c("x","y")))
|
||||
stopifnot(identical(findLocals(quote(local(x<-1,e)), cntxt), "x"))
|
||||
stopifnot(identical(findLocals(quote(local(x<-1)), cntxt), character(0)))
|
||||
stopifnot(identical(findLocals(quote({local<-1;local(x<-1)}), cntxt),
|
||||
c("local", "x")))
|
||||
|
||||
local({
|
||||
f <- function (f, x, y) {
|
||||
local <- f
|
||||
local(x <- y)
|
||||
x
|
||||
}
|
||||
stopifnot(identical(findLocals(body(f), cntxt), c("local","x")))
|
||||
})
|
||||
|
||||
local({
|
||||
cenv <- compiler:::addCenvVars(cenv, "local")
|
||||
cntxt <- compiler:::make.toplevelContext(cenv, NULL)
|
||||
stopifnot(identical(findLocals(quote(local(x<-1,e)), cntxt), "x"))
|
||||
})
|
||||
|
||||
stopifnot(identical(findLocals(quote(assign(x, 3)), cntxt), character(0)))
|
||||
stopifnot(identical(findLocals(quote(assign("x", 3)), cntxt), "x"))
|
||||
stopifnot(identical(findLocals(quote(assign("x", 3, 4)), cntxt), character(0)))
|
||||
library(compiler)
|
||||
|
||||
oldJIT <- enableJIT(3)
|
||||
|
||||
## need a test of level 1 to make sure functions are compiled
|
||||
|
||||
## need more tests here
|
||||
|
||||
repeat { break }
|
||||
|
||||
while(TRUE) break
|
||||
|
||||
for (i in 1:10) i
|
||||
|
||||
enableJIT(oldJIT)
|
||||
|
||||
library(compiler)
|
||||
|
||||
f <- function(x) x
|
||||
|
||||
g <- function(x) repeat if (x) f(return(1)) else return(2)
|
||||
gc <- cmpfun(g)
|
||||
stopifnot(identical(g(TRUE), gc(TRUE)))
|
||||
stopifnot(identical(g(FALSE), gc(FALSE)))
|
||||
|
||||
h <- function(x) { repeat if (x) f(return(1)) else break; 2 }
|
||||
hc <- cmpfun(h)
|
||||
stopifnot(identical(h(TRUE), hc(TRUE)))
|
||||
stopifnot(identical(h(FALSE), hc(FALSE)))
|
||||
|
||||
k <- function(x) { repeat if (x) return(1) else f(break); 2 }
|
||||
kc <- cmpfun(k)
|
||||
stopifnot(identical(k(TRUE), kc(TRUE)))
|
||||
stopifnot(identical(k(FALSE), kc(FALSE)))
|
||||
|
||||
## **** need more variations on this.
|
||||
|
||||
## this would give an error prior to fixing a binding cache bug
|
||||
f <- function(x) { for (y in x) { z <- y; g(break) } ; z }
|
||||
g <- function(x) x
|
||||
cmpfun(f)(c(1,2,3))
|
||||
|
||||
library(compiler)
|
||||
|
||||
# This tests tracking of source file references
|
||||
|
||||
options(keep.source=TRUE)
|
||||
ln <- function() attr(sys.call(), "srcref")[1]
|
||||
|
||||
# NOTE: the block below is sensitive to formatting (newlines)
|
||||
|
||||
code <- quote({
|
||||
start <- ln()
|
||||
plus1 <- ln() # start + 1
|
||||
stopifnot(identical(plus1, start+1L))
|
||||
{
|
||||
plus4 <- ln() # start + 4
|
||||
}
|
||||
stopifnot(identical(plus4, start+4L))
|
||||
plus9 <- 0
|
||||
f <- function() {
|
||||
plus9 <<- ln() # start + 9
|
||||
}
|
||||
f()
|
||||
stopifnot(identical(plus9, start+9L))
|
||||
g <- function(x = ln()) x # start + 13
|
||||
plus13 <- g()
|
||||
stopifnot(identical(plus13, start+13L))
|
||||
plus16 <- g(ln()) # start + 16
|
||||
stopifnot(identical(plus16, start+13L) || identical(plus16, start+16L)) ### NOTE: see compatibility note below
|
||||
for(i in 1) plus18 <- ln() # start + 18
|
||||
stopifnot(identical(plus18, start+18L))
|
||||
for(i in 1) { plus20 <- ln() } # start + 20
|
||||
stopifnot(identical(plus20, start+20L))
|
||||
for(i in 1) {
|
||||
plus23 <- ln() # start + 23
|
||||
}
|
||||
stopifnot(identical(plus23, start+23L))
|
||||
ff <- function() for(i in 1) return(ln()) # start + 26
|
||||
plus26 <- ff()
|
||||
stopifnot(identical(plus26, start+26L))
|
||||
ff1 <- function() {
|
||||
for(i in 1) return(ln()) # start + 30
|
||||
}
|
||||
plus30 <- ff1()
|
||||
stopifnot(identical(plus30, start+30L))
|
||||
})
|
||||
|
||||
## Compatibility note
|
||||
##
|
||||
## in the example above, "plus16" with the AST interpreter gets line number
|
||||
## start+13, but with the compiler, it gets start+16. The latter seems to
|
||||
## be more correct, as line start+16 is where the spelling of "ln()" is.
|
||||
|
||||
oldoptimize <- getCompilerOption("optimize")
|
||||
oldjit <- enableJIT(0)
|
||||
|
||||
l <- function() 1
|
||||
body(l) <- code
|
||||
|
||||
for(jit in 0:2) {
|
||||
enableJIT(jit)
|
||||
for (opt in 0:3) {
|
||||
if (opt >=2 || jit <=2) {
|
||||
setCompilerOptions(optimize=opt)
|
||||
eval(code)
|
||||
eval(compile(code))
|
||||
body(l) <- code
|
||||
l()
|
||||
body(l) <- code
|
||||
cmpfun(l)()
|
||||
local(eval(code))
|
||||
do.call("local", list(code))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setCompilerOptions(optimize = oldoptimize)
|
||||
enableJIT(oldjit)
|
||||
library(compiler)
|
||||
|
||||
ev <- function(expr)
|
||||
tryCatch(withVisible(eval(expr, parent.frame(), baseenv())),
|
||||
error = function(e) conditionMessage(e))
|
||||
|
||||
f <- function(x) switch(x, x = 1, y = , z = 3, , w =, 6, v = )
|
||||
fc <- cmpfun(f)
|
||||
|
||||
stopifnot(identical(ev(quote(fc("x"))), ev(quote(f("x")))))
|
||||
stopifnot(identical(ev(quote(fc("A"))), ev(quote(f("A")))))
|
||||
|
||||
stopifnot(identical(ev(quote(fc(0))), ev(quote(f(0)))))
|
||||
stopifnot(identical(ev(quote(fc(1))), ev(quote(f(1)))))
|
||||
stopifnot(identical(ev(quote(fc(2))), ev(quote(f(2)))))
|
||||
stopifnot(identical(ev(quote(fc(3))), ev(quote(f(3)))))
|
||||
stopifnot(identical(ev(quote(fc(4))), ev(quote(f(4)))))
|
||||
stopifnot(identical(ev(quote(fc(5))), ev(quote(f(5)))))
|
||||
stopifnot(identical(ev(quote(fc(6))), ev(quote(f(6)))))
|
||||
stopifnot(identical(ev(quote(fc(7))), ev(quote(f(7)))))
|
||||
stopifnot(identical(ev(quote(fc(8))), ev(quote(f(8)))))
|
||||
|
||||
|
||||
g <- function(x) switch(x, x = 1, y = , z = 3, w =, 5, v = )
|
||||
gc <- cmpfun(g)
|
||||
|
||||
stopifnot(identical(ev(quote(gc("x"))), ev(quote(g("x")))))
|
||||
stopifnot(identical(ev(quote(gc("y"))), ev(quote(g("y")))))
|
||||
stopifnot(identical(ev(quote(gc("z"))), ev(quote(g("z")))))
|
||||
stopifnot(identical(ev(quote(gc("w"))), ev(quote(g("w")))))
|
||||
stopifnot(identical(ev(quote(gc("v"))), ev(quote(g("v")))))
|
||||
stopifnot(identical(ev(quote(gc("A"))), ev(quote(g("A")))))
|
||||
|
||||
stopifnot(identical(ev(quote(gc(0))), ev(quote(g(0)))))
|
||||
stopifnot(identical(ev(quote(gc(1))), ev(quote(g(1)))))
|
||||
stopifnot(identical(ev(quote(gc(2))), ev(quote(g(2)))))
|
||||
stopifnot(identical(ev(quote(gc(3))), ev(quote(g(3)))))
|
||||
stopifnot(identical(ev(quote(gc(4))), ev(quote(g(4)))))
|
||||
stopifnot(identical(ev(quote(gc(5))), ev(quote(g(5)))))
|
||||
stopifnot(identical(ev(quote(gc(6))), ev(quote(g(6)))))
|
||||
stopifnot(identical(ev(quote(gc(7))), ev(quote(g(7)))))
|
||||
|
||||
|
||||
h <- function(x) switch(x, x = 1, y = , z = 3)
|
||||
hc <- cmpfun(h)
|
||||
|
||||
stopifnot(identical(ev(quote(hc("x"))), ev(quote(h("x")))))
|
||||
stopifnot(identical(ev(quote(hc("y"))), ev(quote(h("y")))))
|
||||
stopifnot(identical(ev(quote(hc("z"))), ev(quote(h("z")))))
|
||||
stopifnot(identical(ev(quote(hc("A"))), ev(quote(h("A")))))
|
||||
|
||||
stopifnot(identical(ev(quote(hc(0))), ev(quote(h(0)))))
|
||||
stopifnot(identical(ev(quote(hc(1))), ev(quote(h(1)))))
|
||||
stopifnot(identical(ev(quote(hc(2))), ev(quote(h(2)))))
|
||||
stopifnot(identical(ev(quote(hc(3))), ev(quote(h(3)))))
|
||||
stopifnot(identical(ev(quote(hc(4))), ev(quote(h(4)))))
|
||||
|
||||
|
||||
k <- function(x) switch(x, x = 1, y = 2, z = 3)
|
||||
kc <- cmpfun(k)
|
||||
|
||||
stopifnot(identical(ev(quote(kc("x"))), ev(quote(k("x")))))
|
||||
stopifnot(identical(ev(quote(kc("y"))), ev(quote(k("y")))))
|
||||
stopifnot(identical(ev(quote(kc("z"))), ev(quote(k("z")))))
|
||||
stopifnot(identical(ev(quote(kc("A"))), ev(quote(k("A")))))
|
||||
|
||||
stopifnot(identical(ev(quote(kc(0))), ev(quote(k(0)))))
|
||||
stopifnot(identical(ev(quote(kc(1))), ev(quote(k(1)))))
|
||||
stopifnot(identical(ev(quote(kc(2))), ev(quote(k(2)))))
|
||||
stopifnot(identical(ev(quote(kc(3))), ev(quote(k(3)))))
|
||||
stopifnot(identical(ev(quote(kc(4))), ev(quote(k(4)))))
|
||||
|
||||
|
||||
l <- function(x) switch(x, "a", "b", "c")
|
||||
lc <- cmpfun(l)
|
||||
|
||||
ce <- function(expr) tryCatch(expr, error = function(e) "Error")
|
||||
|
||||
## both of these should raise errors but the messages will differ
|
||||
stopifnot(identical(ce(lc("A")), ce(l("A"))))
|
||||
|
||||
stopifnot(identical(ev(quote(lc(0))), ev(quote(l(0)))))
|
||||
stopifnot(identical(ev(quote(lc(1))), ev(quote(l(1)))))
|
||||
stopifnot(identical(ev(quote(lc(2))), ev(quote(l(2)))))
|
||||
stopifnot(identical(ev(quote(lc(3))), ev(quote(l(3)))))
|
||||
stopifnot(identical(ev(quote(lc(4))), ev(quote(l(4)))))
|
||||
|
||||
l <- function(x) switch(x)
|
||||
lc <- cmpfun(l)
|
||||
|
||||
cw <- function(expr) tryCatch(expr, warning = function(w) w)
|
||||
|
||||
stopifnot(identical(cw(l(1)), cw(lc(1))))
|
||||
stopifnot(identical(cw(l("A")), cw(lc("A"))))
|
||||
suppressWarnings(stopifnot(identical(withVisible(l(1)),
|
||||
withVisible(lc(1)))))
|
||||
suppressWarnings(stopifnot(identical(withVisible(l("A")),
|
||||
withVisible(lc("A")))))
|
||||
## Check that R_Visible is being set properly.
|
||||
|
||||
library(compiler)
|
||||
vcheck <- function(expr)
|
||||
stopifnot(withVisible(eval(compile(substitute(expr))))$visible)
|
||||
|
||||
asfoo <- function(x) structure(x, class = "foo")
|
||||
xfoo <- asfoo(1)
|
||||
|
||||
## FastMath1
|
||||
vcheck(sqrt(invisible(2)))
|
||||
vcheck(exp(invisible(2)))
|
||||
vcheck(sqrt(invisible(2L)))
|
||||
vcheck(exp(invisible(2L)))
|
||||
vcheck(sqrt(invisible(xfoo)))
|
||||
vcheck(exp(invisible(xfoo)))
|
||||
|
||||
## FastUnary
|
||||
vcheck(+ invisible(2))
|
||||
vcheck(- invisible(2))
|
||||
vcheck(+ invisible(2L))
|
||||
vcheck(- invisible(2L))
|
||||
vcheck(+ invisible(xfoo))
|
||||
vcheck(- invisible(xfoo))
|
||||
|
||||
## FastBinary
|
||||
vcheck(1 + invisible(2))
|
||||
vcheck(1 - invisible(2))
|
||||
vcheck(3 * invisible(2))
|
||||
vcheck(1 / invisible(2))
|
||||
vcheck(3 ^ invisible(2))
|
||||
vcheck(1 + invisible(2L))
|
||||
vcheck(1L + invisible(2))
|
||||
vcheck(1 + invisible(xfoo))
|
||||
|
||||
## FastRelop2
|
||||
vcheck(1 == invisible(2))
|
||||
vcheck(1 != invisible(2))
|
||||
vcheck(1 < invisible(2))
|
||||
vcheck(1 <= invisible(2))
|
||||
vcheck(1 >= invisible(2))
|
||||
vcheck(1 > invisible(2))
|
||||
vcheck(1 > invisible(2L))
|
||||
vcheck(1L > invisible(2L))
|
||||
vcheck(1 > invisible(xfoo))
|
||||
|
||||
## Builtin2
|
||||
vcheck(1 & invisible(2))
|
||||
vcheck(0 | invisible(2))
|
||||
vcheck(0 | invisible(2L))
|
||||
vcheck(0L | invisible(2L))
|
||||
vcheck(0 | invisible(xfoo))
|
||||
|
||||
## Builtin1
|
||||
vcheck(! invisible(2))
|
||||
vcheck(! invisible(2L))
|
||||
vcheck(! invisible(xfoo))
|
||||
|
||||
## DO_VECSUBSET
|
||||
vcheck(1[invisible(1)])
|
||||
vcheck(xfoo[invisible(1)])
|
||||
|
||||
## MATSUBSET_PTR
|
||||
vcheck(matrix(1)[1, invisible(1)])
|
||||
vcheck(asfoo(matrix(1))[1, invisible(1)])
|
||||
|
||||
## SUBSET_N_PTR
|
||||
vcheck(array(1, c(1, 1, 1))[1, 1, invisible(1)])
|
||||
vcheck(asfoo(array(1, c(1, 1, 1)))[1, 1, invisible(1)])
|
||||
|
||||
## DO_DFLTDISPATCH
|
||||
vcheck(invisible(1)[])
|
||||
vcheck(matrix(1)[,invisible(1)])
|
||||
## not sure how to trigger [[ issue
|
||||
vcheck(c(invisible(2)))
|
||||
vcheck(xfoo[])
|
||||
|
||||
## DOLLAR
|
||||
vcheck(invisible(list(x = 1))$x)
|
||||
`$.foo` <- function(x, y) invisible(x)
|
||||
vcheck(xfoo$bar)
|
||||
|
||||
## ISINTEGER
|
||||
vcheck(is.integer(invisible(1)))
|
||||
vcheck(is.integer(invisible(xfoo)))
|
||||
|
||||
## DO_ISTYPE
|
||||
vcheck(is.logical(invisible(1)))
|
||||
vcheck(is.double(invisible(1)))
|
||||
vcheck(is.complex(invisible(1)))
|
||||
vcheck(is.character(invisible(1)))
|
||||
vcheck(is.symbol(invisible(1)))
|
||||
|
||||
## DO_ISTEST
|
||||
vcheck(is.null(invisible(1)))
|
||||
vcheck(is.object(invisible(1)))
|
||||
vcheck(is.numeric(invisible(1)))
|
||||
|
||||
## &&, ||
|
||||
vcheck(invisible(TRUE) || FALSE)
|
||||
vcheck(FALSE || invisible(FALSE))
|
||||
vcheck(invisible(FALSE) && FALSE)
|
||||
vcheck(TRUE && invisible(TRUE))
|
||||
|
||||
## LOG, LOGBASE, MATH1
|
||||
vcheck(log(invisible(2)))
|
||||
vcheck(log(2, invisible(2)))
|
||||
vcheck(log(invisible(xfoo)))
|
||||
vcheck(log(xfoo, invisible(2)))
|
||||
vcheck(sin(invisible(2)))
|
||||
vcheck(cos(invisible(2)))
|
||||
|
||||
## DOTCALL
|
||||
|
||||
## COLON, SEQLEN, SEQALONG
|
||||
vcheck(1 : invisible(2))
|
||||
vcheck(1 : invisible(xfoo))
|
||||
vcheck(seq_len(invisible(2)))
|
||||
vcheck(seq_len(invisible(xfoo)))
|
||||
vcheck(seq_along(invisible(1)))
|
||||
vcheck(seq_along(invisible(xfoo)))
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/assign.R","start":0,"end":3965},{"filename":"/basics.R","start":3965,"end":6379},{"filename":"/const.R","start":6379,"end":9453},{"filename":"/curexpr.R","start":9453,"end":12013},{"filename":"/envir.R","start":12013,"end":15343},{"filename":"/jit.R","start":15343,"end":15549},{"filename":"/loop.R","start":15549,"end":16270},{"filename":"/srcref.R","start":16270,"end":18556},{"filename":"/switch.R","start":18556,"end":22434},{"filename":"/vischk.R","start":22434,"end":25167}],"remote_package_size":25167}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":2036},{"filename":"/aliases.rds","start":2036,"end":2957},{"filename":"/datasets.rdb","start":2957,"end":211881},{"filename":"/datasets.rdx","start":211881,"end":213925},{"filename":"/paths.rds","start":213925,"end":214793}],"remote_package_size":214793}
|
|
@ -1,503 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>R: The R Datasets Package</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<link rel="stylesheet" type="text/css" href="R.css" />
|
||||
</head><body><div class="container">
|
||||
<h1> The R Datasets Package
|
||||
<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
|
||||
</h1>
|
||||
<hr/>
|
||||
<div style="text-align: center;">
|
||||
<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
|
||||
<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
|
||||
</div><h2>Documentation for package ‘datasets’ version 4.3.0</h2>
|
||||
|
||||
<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Help Pages</h2>
|
||||
|
||||
|
||||
<p style="text-align: center;">
|
||||
<a href="# "> </a>
|
||||
<a href="#A">A</a>
|
||||
<a href="#B">B</a>
|
||||
<a href="#C">C</a>
|
||||
<a href="#D">D</a>
|
||||
<a href="#E">E</a>
|
||||
<a href="#F">F</a>
|
||||
<a href="#H">H</a>
|
||||
<a href="#I">I</a>
|
||||
<a href="#J">J</a>
|
||||
<a href="#L">L</a>
|
||||
<a href="#M">M</a>
|
||||
<a href="#N">N</a>
|
||||
<a href="#O">O</a>
|
||||
<a href="#P">P</a>
|
||||
<a href="#Q">Q</a>
|
||||
<a href="#R">R</a>
|
||||
<a href="#S">S</a>
|
||||
<a href="#T">T</a>
|
||||
<a href="#U">U</a>
|
||||
<a href="#V">V</a>
|
||||
<a href="#W">W</a>
|
||||
</p>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="datasets-package.html">datasets-package</a></td>
|
||||
<td>The R Datasets Package</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="A">-- A --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="ability.cov.html">ability.cov</a></td>
|
||||
<td>Ability and Intelligence Tests</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="airmiles.html">airmiles</a></td>
|
||||
<td>Passenger Miles on Commercial US Airlines, 1937-1960</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="AirPassengers.html">AirPassengers</a></td>
|
||||
<td>Monthly Airline Passenger Numbers 1949-1960</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="airquality.html">airquality</a></td>
|
||||
<td>New York Air Quality Measurements</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="anscombe.html">anscombe</a></td>
|
||||
<td>Anscombe's Quartet of 'Identical' Simple Linear Regressions</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="attenu.html">attenu</a></td>
|
||||
<td>The Joyner-Boore Attenuation Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="attitude.html">attitude</a></td>
|
||||
<td>The Chatterjee-Price Attitude Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="austres.html">austres</a></td>
|
||||
<td>Quarterly Time Series of the Number of Australian Residents</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="B">-- B --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="beavers.html">beaver1</a></td>
|
||||
<td>Body Temperature Series of Two Beavers</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="beavers.html">beaver2</a></td>
|
||||
<td>Body Temperature Series of Two Beavers</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="beavers.html">beavers</a></td>
|
||||
<td>Body Temperature Series of Two Beavers</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="BJsales.html">BJsales</a></td>
|
||||
<td>Sales Data with Leading Indicator</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="BJsales.html">BJsales.lead</a></td>
|
||||
<td>Sales Data with Leading Indicator</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="BOD.html">BOD</a></td>
|
||||
<td>Biochemical Oxygen Demand</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="C">-- C --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="cars.html">cars</a></td>
|
||||
<td>Speed and Stopping Distances of Cars</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="ChickWeight.html">ChickWeight</a></td>
|
||||
<td>Weight versus age of chicks on different diets</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="chickwts.html">chickwts</a></td>
|
||||
<td>Chicken Weights by Feed Type</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="zCO2.html">CO2</a></td>
|
||||
<td>Carbon Dioxide Uptake in Grass Plants</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="co2.html">co2</a></td>
|
||||
<td>Mauna Loa Atmospheric CO2 Concentration</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="crimtab.html">crimtab</a></td>
|
||||
<td>Student's 3000 Criminals Data</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="D">-- D --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="datasets-package.html">datasets</a></td>
|
||||
<td>The R Datasets Package</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="discoveries.html">discoveries</a></td>
|
||||
<td>Yearly Numbers of Important Discoveries</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="DNase.html">DNase</a></td>
|
||||
<td>Elisa assay of DNase</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="E">-- E --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="esoph.html">esoph</a></td>
|
||||
<td>Smoking, Alcohol and (O)esophageal Cancer</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="euro.html">euro</a></td>
|
||||
<td>Conversion Rates of Euro Currencies</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="euro.html">euro.cross</a></td>
|
||||
<td>Conversion Rates of Euro Currencies</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="eurodist.html">eurodist</a></td>
|
||||
<td>Distances Between European Cities and Between US Cities</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="EuStockMarkets.html">EuStockMarkets</a></td>
|
||||
<td>Daily Closing Prices of Major European Stock Indices, 1991-1998</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="F">-- F --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="faithful.html">faithful</a></td>
|
||||
<td>Old Faithful Geyser Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="UKLungDeaths.html">fdeaths</a></td>
|
||||
<td>Monthly Deaths from Lung Diseases in the UK</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Formaldehyde.html">Formaldehyde</a></td>
|
||||
<td>Determination of Formaldehyde</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="freeny.html">freeny</a></td>
|
||||
<td>Freeny's Revenue Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="freeny.html">freeny.x</a></td>
|
||||
<td>Freeny's Revenue Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="freeny.html">freeny.y</a></td>
|
||||
<td>Freeny's Revenue Data</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="H">-- H --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="HairEyeColor.html">HairEyeColor</a></td>
|
||||
<td>Hair and Eye Color of Statistics Students</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Harman23.cor.html">Harman23.cor</a></td>
|
||||
<td>Harman Example 2.3</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Harman74.cor.html">Harman74.cor</a></td>
|
||||
<td>Harman Example 7.4</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="I">-- I --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="Indometh.html">Indometh</a></td>
|
||||
<td>Pharmacokinetics of Indomethacin</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="infert.html">infert</a></td>
|
||||
<td>Infertility after Spontaneous and Induced Abortion</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="InsectSprays.html">InsectSprays</a></td>
|
||||
<td>Effectiveness of Insect Sprays</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="iris.html">iris</a></td>
|
||||
<td>Edgar Anderson's Iris Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="iris.html">iris3</a></td>
|
||||
<td>Edgar Anderson's Iris Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="islands.html">islands</a></td>
|
||||
<td>Areas of the World's Major Landmasses</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="J">-- J --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="JohnsonJohnson.html">JohnsonJohnson</a></td>
|
||||
<td>Quarterly Earnings per Johnson & Johnson Share</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="L">-- L --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="LakeHuron.html">LakeHuron</a></td>
|
||||
<td>Level of Lake Huron 1875-1972</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="UKLungDeaths.html">ldeaths</a></td>
|
||||
<td>Monthly Deaths from Lung Diseases in the UK</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="lh.html">lh</a></td>
|
||||
<td>Luteinizing Hormone in Blood Samples</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="LifeCycleSavings.html">LifeCycleSavings</a></td>
|
||||
<td>Intercountry Life-Cycle Savings Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Loblolly.html">Loblolly</a></td>
|
||||
<td>Growth of Loblolly pine trees</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="longley.html">longley</a></td>
|
||||
<td>Longley's Economic Regression Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="lynx.html">lynx</a></td>
|
||||
<td>Annual Canadian Lynx trappings 1821-1934</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="M">-- M --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="UKLungDeaths.html">mdeaths</a></td>
|
||||
<td>Monthly Deaths from Lung Diseases in the UK</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="morley.html">morley</a></td>
|
||||
<td>Michelson Speed of Light Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="mtcars.html">mtcars</a></td>
|
||||
<td>Motor Trend Car Road Tests</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="N">-- N --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="nhtemp.html">nhtemp</a></td>
|
||||
<td>Average Yearly Temperatures in New Haven</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Nile.html">Nile</a></td>
|
||||
<td>Flow of the River Nile</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="nottem.html">nottem</a></td>
|
||||
<td>Average Monthly Temperatures at Nottingham, 1920-1939</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="npk.html">npk</a></td>
|
||||
<td>Classical N, P, K Factorial Experiment</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="O">-- O --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="occupationalStatus.html">occupationalStatus</a></td>
|
||||
<td>Occupational Status of Fathers and their Sons</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Orange.html">Orange</a></td>
|
||||
<td>Growth of Orange Trees</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="OrchardSprays.html">OrchardSprays</a></td>
|
||||
<td>Potency of Orchard Sprays</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="P">-- P --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="PlantGrowth.html">PlantGrowth</a></td>
|
||||
<td>Results from an Experiment on Plant Growth</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="precip.html">precip</a></td>
|
||||
<td>Annual Precipitation in US Cities</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="presidents.html">presidents</a></td>
|
||||
<td>Quarterly Approval Ratings of US Presidents</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pressure.html">pressure</a></td>
|
||||
<td>Vapor Pressure of Mercury as a Function of Temperature</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Puromycin.html">Puromycin</a></td>
|
||||
<td>Reaction Velocity of an Enzymatic Reaction</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="Q">-- Q --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="quakes.html">quakes</a></td>
|
||||
<td>Locations of Earthquakes off Fiji</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="R">-- R --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="randu.html">randu</a></td>
|
||||
<td>Random Numbers from Congruential Generator RANDU</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rivers.html">rivers</a></td>
|
||||
<td>Lengths of Major North American Rivers</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rock.html">rock</a></td>
|
||||
<td>Measurements on Petroleum Rock Samples</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="S">-- S --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="UKDriverDeaths.html">Seatbelts</a></td>
|
||||
<td>Road Casualties in Great Britain 1969-84</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="sleep.html">sleep</a></td>
|
||||
<td>Student's Sleep Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stackloss.html">stack.loss</a></td>
|
||||
<td>Brownlee's Stack Loss Plant Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stackloss.html">stack.x</a></td>
|
||||
<td>Brownlee's Stack Loss Plant Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stackloss.html">stackloss</a></td>
|
||||
<td>Brownlee's Stack Loss Plant Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.abb</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.area</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.center</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.division</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.name</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.region</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="state.html">state.x77</a></td>
|
||||
<td>US State Facts and Figures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="sunspot.month.html">sunspot.month</a></td>
|
||||
<td>Monthly Sunspot Data, from 1749 to "Present"</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="sunspot.year.html">sunspot.year</a></td>
|
||||
<td>Yearly Sunspot Data, 1700-1988</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="sunspots.html">sunspots</a></td>
|
||||
<td>Monthly Sunspot Numbers, 1749-1983</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="swiss.html">swiss</a></td>
|
||||
<td>Swiss Fertility and Socioeconomic Indicators (1888) Data</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="T">-- T --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="Theoph.html">Theoph</a></td>
|
||||
<td>Pharmacokinetics of Theophylline</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Titanic.html">Titanic</a></td>
|
||||
<td>Survival of passengers on the Titanic</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="ToothGrowth.html">ToothGrowth</a></td>
|
||||
<td>The Effect of Vitamin C on Tooth Growth in Guinea Pigs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="treering.html">treering</a></td>
|
||||
<td>Yearly Treering Data, -6000-1979</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="trees.html">trees</a></td>
|
||||
<td>Diameter, Height and Volume for Black Cherry Trees</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="U">-- U --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="UCBAdmissions.html">UCBAdmissions</a></td>
|
||||
<td>Student Admissions at UC Berkeley</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="UKDriverDeaths.html">UKDriverDeaths</a></td>
|
||||
<td>Road Casualties in Great Britain 1969-84</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="UKgas.html">UKgas</a></td>
|
||||
<td>UK Quarterly Gas Consumption</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="UKLungDeaths.html">UKLungDeaths</a></td>
|
||||
<td>Monthly Deaths from Lung Diseases in the UK</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="USAccDeaths.html">USAccDeaths</a></td>
|
||||
<td>Accidental Deaths in the US 1973-1978</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="USArrests.html">USArrests</a></td>
|
||||
<td>Violent Crime Rates by US State</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="eurodist.html">UScitiesD</a></td>
|
||||
<td>Distances Between European Cities and Between US Cities</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="USJudgeRatings.html">USJudgeRatings</a></td>
|
||||
<td>Lawyers' Ratings of State Judges in the US Superior Court</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="USPersonalExpenditure.html">USPersonalExpenditure</a></td>
|
||||
<td>Personal Expenditure Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="uspop.html">uspop</a></td>
|
||||
<td>Populations Recorded by the US Census</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="V">-- V --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="VADeaths.html">VADeaths</a></td>
|
||||
<td>Death Rates in Virginia (1940)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="volcano.html">volcano</a></td>
|
||||
<td>Topographic Information on Auckland's Maunga Whau Volcano</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="W">-- W --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="warpbreaks.html">warpbreaks</a></td>
|
||||
<td>The Number of Breaks in Yarn during Weaving</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="women.html">women</a></td>
|
||||
<td>Average Heights and Weights for American Women</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="WorldPhones.html">WorldPhones</a></td>
|
||||
<td>The World's Telephones</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="WWWusage.html">WWWusage</a></td>
|
||||
<td>Internet Usage per Minute</td></tr>
|
||||
</table>
|
||||
</div></body></html>
|
||||
@media screen {
|
||||
.container {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.rimage img { /* from knitr - for examples and demos */
|
||||
width: 96%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.katex { font-size: 1.1em; }
|
||||
|
||||
code {
|
||||
color: inherit;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.4;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background: white;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
background: white;
|
||||
color: rgb(50%, 0%, 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
background: white;
|
||||
color: rgb(55%, 55%, 55%);
|
||||
font-family: monospace;
|
||||
font-size: 1.4em; /* x-large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h4 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h5 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
h6 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
img.toplogo {
|
||||
width: 4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.arrow {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
span.acronym {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
span.env {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.option{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.pkg {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.samp{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.vignettes a:hover {
|
||||
background: rgb(85%, 85%, 85%);
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
span.rlang {
|
||||
font-family: Courier New, Courier;
|
||||
color: #666666;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":16089},{"filename":"/R.css","start":16089,"end":17933}],"remote_package_size":17933}
|
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -1,171 +0,0 @@
|
|||
### ----------- Show (almost) all named colors ---------------------
|
||||
|
||||
## 1) with traditional 'graphics' package:
|
||||
showCols1 <- function(bg = "gray", cex = 0.75, srt = 30) {
|
||||
m <- ceiling(sqrt(n <- length(cl <- colors())))
|
||||
length(cl) <- m*m; cm <- matrix(cl, m)
|
||||
##
|
||||
require("graphics")
|
||||
op <- par(mar=rep(0,4), ann=FALSE, bg = bg); on.exit(par(op))
|
||||
plot(1:m,1:m, type="n", axes=FALSE)
|
||||
text(col(cm), rev(row(cm)), cm, col = cl, cex=cex, srt=srt)
|
||||
}
|
||||
showCols1()
|
||||
|
||||
## 2) with 'grid' package:
|
||||
showCols2 <- function(bg = "grey", cex = 0.75, rot = 30) {
|
||||
m <- ceiling(sqrt(n <- length(cl <- colors())))
|
||||
length(cl) <- m*m; cm <- matrix(cl, m)
|
||||
##
|
||||
require("grid")
|
||||
grid.newpage(); vp <- viewport(width = .92, height = .92)
|
||||
grid.rect(gp=gpar(fill=bg))
|
||||
grid.text(cm, x = col(cm)/m, y = rev(row(cm))/m, rot = rot,
|
||||
vp=vp, gp=gpar(cex = cex, col = cm))
|
||||
}
|
||||
showCols2()
|
||||
showCols2(bg = "gray33")
|
||||
|
||||
###
|
||||
|
||||
##' @title Comparing Colors
|
||||
##' @param col
|
||||
##' @param nrow
|
||||
##' @param ncol
|
||||
##' @param txt.col
|
||||
##' @return the grid layout, invisibly
|
||||
##' @author Marius Hofert, originally
|
||||
plotCol <- function(col, nrow=1, ncol=ceiling(length(col) / nrow),
|
||||
txt.col="black") {
|
||||
stopifnot(nrow >= 1, ncol >= 1)
|
||||
if(length(col) > nrow*ncol)
|
||||
warning("some colors will not be shown")
|
||||
require(grid)
|
||||
grid.newpage()
|
||||
gl <- grid.layout(nrow, ncol)
|
||||
pushViewport(viewport(layout=gl))
|
||||
ic <- 1
|
||||
for(i in 1:nrow) {
|
||||
for(j in 1:ncol) {
|
||||
pushViewport(viewport(layout.pos.row=i, layout.pos.col=j))
|
||||
grid.rect(gp= gpar(fill=col[ic]))
|
||||
grid.text(col[ic], gp=gpar(col=txt.col))
|
||||
upViewport()
|
||||
ic <- ic+1
|
||||
}
|
||||
}
|
||||
upViewport()
|
||||
invisible(gl)
|
||||
}
|
||||
|
||||
## A Chocolate Bar of colors:
|
||||
plotCol(c("#CC8C3C", paste0("chocolate", 2:4),
|
||||
paste0("darkorange", c("",1:2)), paste0("darkgoldenrod", 1:2),
|
||||
"orange", "orange1", "sandybrown", "tan1", "tan2"),
|
||||
nrow=2)
|
||||
|
||||
##' Find close R colors() to a given color {original by Marius Hofert)
|
||||
##' using Euclidean norm in (HSV / RGB / ...) color space
|
||||
nearRcolor <- function(rgb, cSpace = c("hsv", "rgb255", "Luv", "Lab"),
|
||||
dist = switch(cSpace, "hsv" = 0.10, "rgb255" = 30,
|
||||
"Luv" = 15, "Lab" = 12))
|
||||
{
|
||||
if(is.character(rgb)) rgb <- col2rgb(rgb)
|
||||
stopifnot(length(rgb <- as.vector(rgb)) == 3)
|
||||
Rcol <- col2rgb(.cc <- colors())
|
||||
uniqC <- !duplicated(t(Rcol)) # gray9 == grey9 (etc)
|
||||
Rcol <- Rcol[, uniqC] ; .cc <- .cc[uniqC]
|
||||
cSpace <- match.arg(cSpace)
|
||||
convRGB2 <- function(Rgb, to)
|
||||
t(convertColor(t(Rgb), from="sRGB", to=to, scale.in=255))
|
||||
## the transformation, rgb{0..255} --> cSpace :
|
||||
TransF <- switch(cSpace,
|
||||
"rgb255" = identity,
|
||||
"hsv" = rgb2hsv,
|
||||
"Luv" = function(RGB) convRGB2(RGB, "Luv"),
|
||||
"Lab" = function(RGB) convRGB2(RGB, "Lab"))
|
||||
d <- sqrt(colSums((TransF(Rcol) - as.vector(TransF(rgb)))^2))
|
||||
iS <- sort.list(d[near <- d <= dist])# sorted: closest first
|
||||
setNames(.cc[near][iS], format(zapsmall(d[near][iS]), digits=3))
|
||||
}
|
||||
|
||||
nearRcolor(col2rgb("tan2"), "rgb")
|
||||
nearRcolor(col2rgb("tan2"), "hsv")
|
||||
nearRcolor(col2rgb("tan2"), "Luv")
|
||||
nearRcolor(col2rgb("tan2"), "Lab")
|
||||
|
||||
nearRcolor("#334455")
|
||||
|
||||
## Now, consider choosing a color by looking in the
|
||||
## neighborhood of one you know :
|
||||
|
||||
plotCol(nearRcolor("deepskyblue", "rgb", dist=50))
|
||||
plotCol(nearRcolor("deepskyblue", dist=.1))
|
||||
|
||||
plotCol(nearRcolor("tomato", "rgb", dist= 50), nrow=3)
|
||||
plotCol(nearRcolor("tomato", "hsv", dist=.12), nrow=3)
|
||||
plotCol(nearRcolor("tomato", "Luv", dist= 25), nrow=3)
|
||||
plotCol(nearRcolor("tomato", "Lab", dist= 18), nrow=3)
|
||||
### ------ hcl() explorations
|
||||
|
||||
hcl.wheel <-
|
||||
function(chroma = 35, lums = 0:100, hues = 1:360, asp = 1,
|
||||
p.cex = 0.6, do.label = FALSE, rev.lum = FALSE,
|
||||
fixup = TRUE)
|
||||
{
|
||||
## Purpose: show chroma "sections" of hcl() color space; see ?hcl
|
||||
## ----------------------------------------------------------------------
|
||||
## Arguments: chroma: can be vector -> multiple plots are done,
|
||||
## lums, hues, fixup : all corresponding to hcl()'s args
|
||||
## rev.lum: logical indicating if luminance
|
||||
## should go from outer to inner
|
||||
## ----------------------------------------------------------------------
|
||||
## Author: Martin Maechler, Date: 24 Jun 2005
|
||||
|
||||
require("graphics")
|
||||
stopifnot(is.numeric(lums), lums >= 0, lums <= 100,
|
||||
is.numeric(hues), hues >= 0, hues <= 360,
|
||||
is.numeric(chroma), chroma >= 0, (nch <- length(chroma)) >= 1)
|
||||
if(is.unsorted(hues)) hues <- sort(hues)
|
||||
if(nch > 1) {
|
||||
op <- par(mfrow= n2mfrow(nch), mar = c(0,0,0,0), xpd = TRUE)
|
||||
on.exit(par(op))
|
||||
}
|
||||
for(i.c in 1:nch) {
|
||||
plot(-1:1,-1:1, type="n", axes = FALSE, xlab="",ylab="", asp = asp)
|
||||
## main = sprintf("hcl(h = <angle>, c = %g)", chroma[i.c]),
|
||||
text(0.4, 0.99, paste("chroma =", format(chroma[i.c])),
|
||||
adj = 0, font = 4)
|
||||
l.s <- (if(rev.lum) rev(lums) else lums) / max(lums) # <= 1
|
||||
for(ang in hues) { # could do all this using outer() instead of for()...
|
||||
a. <- ang * pi/180
|
||||
z.a <- exp(1i * a.)
|
||||
cols <- hcl(ang, c = chroma[i.c], l = lums, fixup = fixup)
|
||||
points(l.s * z.a, pch = 16, col = cols, cex = p.cex)
|
||||
##if(do."text") : draw the 0,45,90,... angle "lines"
|
||||
if(do.label)
|
||||
text(z.a*1.05, labels = ang, col = cols[length(cols)/2],
|
||||
srt = ang)
|
||||
}
|
||||
if(!fixup) ## show the outline
|
||||
lines(exp(1i * hues * pi/180))
|
||||
}
|
||||
invisible()
|
||||
}
|
||||
|
||||
## and now a few interesting calls :
|
||||
|
||||
hcl.wheel() # and watch it redraw when you fiddle with the graphic window
|
||||
hcl.wheel(rev.lum= TRUE) # ditto
|
||||
hcl.wheel(do.label = TRUE) # ditto
|
||||
|
||||
|
||||
## Now watch:
|
||||
hcl.wheel(chroma = c(25,35,45,55))
|
||||
|
||||
hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.4)
|
||||
hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, fixup = FALSE)
|
||||
hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE)
|
||||
if(dev.interactive()) # new "graphics window" -- to compare with previous :
|
||||
dev.new()
|
||||
hcl.wheel(chroma = seq(10, 90, by = 10), p.cex = 0.3, rev.lum = TRUE, fixup=FALSE)
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/colors.R","start":0,"end":3766},{"filename":"/hclColors.R","start":3766,"end":6376}],"remote_package_size":6376}
|
|
@ -1,696 +0,0 @@
|
|||
/StandardEncoding [
|
||||
% 0000
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
% 0040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright
|
||||
/parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
|
||||
/zero /one /two /three /four /five /six /seven
|
||||
/eight /nine /colon /semicolon /less /equal /greater /question
|
||||
% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
% 0240
|
||||
/.notdef /exclamdown /cent /sterling /fraction /yen /florin /section
|
||||
/currency /quotesingle /quotedblleft /guillemotleft /guilsinglleft /guilsinglright /fi /fl
|
||||
/.notdef /endash /dagger /daggerdbl /periodcentered /.notdef /paragraph /bullet
|
||||
/quotesinglbase /quotedblbase /quotedblright /guillemotright /ellipsis /perthousand /.notdef /questiondown
|
||||
% 0300
|
||||
/.notdef /grave /acute /circumflex /tilde /macron /breve /dotaccent
|
||||
/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
|
||||
/emdash /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /AE /.notdef /ordfeminine /.notdef /.notdef /.notdef /.notdef
|
||||
/Lslash /Oslash /OE /ordmasculine /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /ae /.notdef /.notdef /.notdef /dotlessi /.notdef /.notdef
|
||||
/lslash /oslash /oe /germandbls /.notdef /.notdef /.notdef /.notdef
|
||||
]
|
||||
/SymbolEncoding [
|
||||
% 0000
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
% 0040
|
||||
/space /exclam /universal /numbersign /existential /percent /ampersand /suchthat
|
||||
/parenleft /parenright /asteriskmath /plus /comma /minus /period /slash
|
||||
/zero /one /two /three /four /five /six /seven
|
||||
/eight /nine /colon /semicolon /less /equal /greater /question
|
||||
% 0100
|
||||
/congruent /Alpha /Beta /Chi /Delta /Epsilon /Phi /Gamma
|
||||
/Eta /Iota /theta1 /Kappa /Lambda /Mu /Nu /Omicron
|
||||
/Pi /Theta /Rho /Sigma /Tau /Upsilon /sigma1 /Omega
|
||||
/Xi /Psi /Zeta /bracketleft /therefore /bracketright /perpendicular /underscore
|
||||
% 0140
|
||||
/radicalex /alpha /beta /chi /delta /epsilon /phi /gamma
|
||||
/eta /iota /phi1 /kappa /lambda /mu /nu /omicron
|
||||
/pi /theta /rho /sigma /tau /upsilon /omega1 /omega
|
||||
/xi /psi /zeta /braceleft /bar /braceright /similar /.notdef
|
||||
% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
% 0240
|
||||
/Euro /Upsilon1 /minute /lessequal /fraction /infinity /florin /club
|
||||
/diamond /heart /spade /arrowboth /arrowleft /arrowup /arrowright /arrowdown
|
||||
/degree /plusminus /second /greaterequal /multiply /proportional /partialdiff /bullet
|
||||
/divide /notequal /equivalence /approxequal /ellipsis /arrowvertex /arrowhorizex /carriagereturn
|
||||
% 0300
|
||||
/aleph /Ifraktur /Rfraktur /weierstrass /circlemultiply /circleplus /emptyset /intersection
|
||||
/union /propersuperset /reflexsuperset /notsubset /propersubset /reflexsubset /element /notelement
|
||||
/angle /gradient /registerserif /copyrightserif /trademarkserif /product /radical /dotmath
|
||||
/logicalnot /logicaland /logicalor /arrowdblboth /arrowdblleft /arrowdblup /arrowdblright /arrowdbldown
|
||||
% 0340
|
||||
/lozenge /angleleft /registersans /copyrightsans /trademarksans /summation /parenlefttp /parenleftex
|
||||
/parenleftbt /bracketlefttp /bracketleftex /bracketleftbt /bracelefttp /braceleftmid /braceleftbt /braceex
|
||||
/.notdef /angleright /integral /integraltp /integralex /integralbt /parenrighttp /parenrightex
|
||||
/parenrightbt /bracketrighttp /bracketrightex /bracketrightbt /bracerighttp /bracerightmid /bracerightbt /.notdef
|
||||
]
|
||||
%% CP1250 This should be a postscript fragment of an array of length exactly 256
|
||||
/CP1250Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
|
||||
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
|
||||
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/Euro /.notdef /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl
|
||||
/.notdef /perthousand /Scaron /guilsinglleft /Sacute /Tcaron /Zcaron /Zacute
|
||||
/.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
|
||||
/.notdef /trademark /scaron /guilsinglright /sacute /tcaron /zcaron /zacute
|
||||
%% 0240
|
||||
/space /caron /breve /Lslash /currency /Aogonek /brokenbar /section
|
||||
/dieresis /copyright /Scedilla /guillemotleft /logicalnot /hyphen /registered /Zdotaccent
|
||||
/degree /plusminus /ogonek /lslash /acute /mu /paragraph /periodcentered
|
||||
/cedilla /aogonek /scedilla /guillemotright /Lcaron /hungarumlaut /lcaron /zdotaccent
|
||||
%% 0300
|
||||
/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
|
||||
/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
|
||||
/Dcroat /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply
|
||||
/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Tcommaaccent /germandbls
|
||||
% 0340
|
||||
/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
|
||||
/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron
|
||||
/dcroat /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
|
||||
/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /tcommaaccent /dotaccent
|
||||
]
|
||||
%% CP1251 This should be a postscript fragment of an array of length exactly 256
|
||||
/CP1251Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
|
||||
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
|
||||
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/afii10051 /afii10052 /quotesinglbase /afii10100 /quotedblbase /ellipsis /dagger /daggerdbl
|
||||
/Euro /perthousand /afii10058 /guilsinglleft /afii10059 /afii10061 /afii10060 /afii10145
|
||||
%% 0220
|
||||
/afii10099 /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
|
||||
/.notdef /trademark /afii10106 /guilsinglright /afii10107 /afii10109 /afii10108 /afii10193
|
||||
%% 0240
|
||||
/space /afii10062 /afii10110 /afii10057 /currency /afii10050 /brokenbar /section
|
||||
/afii10023 /copyright /afii10047 /guillemotleft /logicalnot /hyphen /registered /afii10056
|
||||
/degree /plusminus /afii10055 /afii10103 /afii10098 /mu /paragraph /periodcentered
|
||||
/afii10071 /afii61352 /afii10101 /guillemotright /afii10105 /afii10054 /afii10102 /afii10104
|
||||
%% 0300
|
||||
/afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025
|
||||
/afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033
|
||||
/afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041
|
||||
/afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049
|
||||
%% 0340
|
||||
/afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073
|
||||
/afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081
|
||||
/afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089
|
||||
/afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097
|
||||
]
|
||||
%% CP1253 This should be a postscript fragment of an array of length exactly 256
|
||||
/CP1253Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
|
||||
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
|
||||
/.notdef /perthousand /.notdef /guilsinglleft /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
|
||||
/.notdef /trademark /.notdef /guilsinglright /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240
|
||||
/space /dialytikatonos /Alphatonos /sterling /currency /yen /brokenbar /section
|
||||
/dieresis /copyright /.notdef /guillemotleft /logicalnot /hyphen /registered /afii00208
|
||||
/degree /plusminus /twosuperior /threesuperior /tonos /mu /paragraph /periodcentered
|
||||
/Epsilontonos /Etatonos /Iotatonos /guillemotright /Omicrontonos /onehalf /Upsilontonos /Omegatonos
|
||||
/iotadieresistonos /Alpha /Beta /Gamma /Deltagreek /Epsilon /Zeta /Eta
|
||||
/Theta /Iota /Kappa /Lambda /Mu /Nu /Xi /Omicron
|
||||
/Pi /Rho /.notdef /Sigma /Tau /Upsilon /Phi /Chi
|
||||
/Psi /Omegagreek /Iotadieresis /Upsilondieresis /alphatonos /epsilontonos /etatonos /iotatonos
|
||||
/upsilondieresistonos /alpha /beta /gamma /delta /epsilon /zeta /eta
|
||||
/theta /iota /kappa /lambda /mugreek /nu /xi /omicron
|
||||
/pi /rho /sigma1 /sigma /tau /upsilon /phi /chi
|
||||
/psi /omega /iotadieresis /upsilondieresis /omicrontonos /upsilontonos /omegatonos /.notdef
|
||||
]
|
||||
%% CP1257 This should be a postscript fragment of an array of length exactly 256
|
||||
/CP1257Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quotesingle
|
||||
/parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
|
||||
/X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w
|
||||
/x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/Euro /.notdef /quotesinglbase /.notdef /quotedblbase /ellipsis /dagger /daggerdbl
|
||||
/.notdef /perthousand /.notdef /guilsinglleft /.notdef /dieresis /caron /cedilla
|
||||
/.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
|
||||
/.notdef /trademark /.notdef /guilsinglright /.notdef /macron /ogonek /.notdef
|
||||
%% 0240
|
||||
/space /.notdef /cent /sterling /currency /.notdef /brokenbar /section
|
||||
/Oslash /copyright /Rcommaaccent /guillemotleft /logicalnot /hyphen /registered /AE
|
||||
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
|
||||
/oslash /onesuperior /rcommaaccent /guillemotright /onequarter /onehalf /threequarters /ae
|
||||
%% 0300
|
||||
/Aogonek /Iogonek /Amacron /Cacute /Adieresis /Aring /Eogonek /Emacron
|
||||
/Ccaron /Eacute /Zacute /Edotaccent /Gcommaaccent /Kcommaaccent /Imacron /Lcommaaccent
|
||||
/Scaron /Nacute /Ncommaaccent /Oacute /Omacron /Otilde /Odieresis /multiply
|
||||
/Uogonek /Lslash /Sacute /Umacron /Udieresis /Zdotaccent /Zcaron /germandbls
|
||||
%% 0340
|
||||
/aogonek /iogonek /amacron /cacute /adieresis /aring /eogonek /emacron
|
||||
/ccaron /eacute /zacute /edotaccent /gcommaaccent /kcommaaccent /imacron /lcommaaccent
|
||||
/scaron /nacute /ncommaaccent /oacute /omacron /otilde /odieresis /divide
|
||||
/uogonek /lslash /sacute /umacron /udieresis /zdotaccent /zcaron /dotaccent
|
||||
]
|
||||
%% ISO8859-5 This should be a postscript fragment of an array of length exactly 256
|
||||
/ISOLatin5Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240
|
||||
/space /afii10023 /afii10051 /afii10052 /afii10053 /afii10054 /afii10055 /afii10056
|
||||
/afii10057 /afii10058 /afii10059 /afii10060 /afii10061 /hyphen /afii10062 /afii10145
|
||||
/afii10017 /afii10018 /afii10019 /afii10020 /afii10021 /afii10022 /afii10024 /afii10025
|
||||
/afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032 /afii10033
|
||||
%% 0300
|
||||
/afii10034 /afii10035 /afii10036 /afii10037 /afii10038 /afii10039 /afii10040 /afii10041
|
||||
/afii10042 /afii10043 /afii10044 /afii10045 /afii10046 /afii10047 /afii10048 /afii10049
|
||||
/afii10065 /afii10066 /afii10067 /afii10068 /afii10069 /afii10070 /afii10072 /afii10073
|
||||
/afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080 /afii10081
|
||||
%% 0340
|
||||
/afii10082 /afii10083 /afii10084 /afii10085 /afii10086 /afii10087 /afii10088 /afii10089
|
||||
/afii10090 /afii10091 /afii10092 /afii10093 /afii10094 /afii10095 /afii10096 /afii10097
|
||||
/afii61352 /afii10071 /afii10099 /afii10100 /afii10101 /afii10102 /afii10103 /afii10104
|
||||
/afii10105 /afii10106 /afii10107 /afii10108 /afii10109 /section /afii10110 /afii10193
|
||||
]
|
||||
%% ISO8859-7 (2003) This should be a postscript fragment of an array of length exactly 256
|
||||
/ISOGreekEncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240 A5 is Drachma, not in Adobe list.
|
||||
/space /quoteleft /quoteright /sterling /Euro /.notdef /brokenbar /section
|
||||
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /afii00208
|
||||
/degree /plusminus /twosuperior /threesuperior /tonos /dieresistonos /Alphatonos /periodcentered
|
||||
/Epsilontonos /Etatonos /Iotatonos /guillemotright /Omicrontonos /onehalf /Upsilontonos /Omegatonos
|
||||
/iotadieresistonos /Alpha /Beta /Gamma /Deltagreek /Epsilon /Zeta /Eta
|
||||
/Theta /Iota /Kappa /Lambda /Mu /Nu /Xi /Omicron
|
||||
/Pi /Rho /.notdef /Sigma /Tau /Upsilon /Phi /Chi
|
||||
/Psi /Omegagreek /Iotadieresis /Upsilondieresis /alphatonos /epsilontonos /etatonos /iotatonos
|
||||
%% 0340
|
||||
/upsilondieresistonos /alpha /beta /gamma /delta /epsilon /zeta /eta
|
||||
/theta /iota /kappa /lambda /mugreek /nu /xi /omicron
|
||||
/pi /rho /sigma1 /sigma /tau /upsilon /phi /chi
|
||||
/psi /omega /iotadieresis /upsilondieresis /omicrontonos /upsilontonos /omegatonos /.notdef
|
||||
]
|
||||
%% This should be a postscript fragment of an array of length exactly 256
|
||||
/ISOLatin1Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
|
||||
/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
|
||||
%% 0240
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
|
||||
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
|
||||
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
|
||||
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
|
||||
%% 0300
|
||||
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||
]
|
||||
%% This should be a postscript fragment of an array of length exactly 256
|
||||
/ISOLatin2Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240
|
||||
/space /Aogonek /breve /Lslash /currency /Lcaron /Sacute /section
|
||||
/dieresis /Scaron /Scedilla /Tcaron /Zacute /hyphen /Zcaron /Zdotaccent
|
||||
/degree /aogonek /ogonek /lslash /acute /lcaron /sacute /caron
|
||||
/cedilla /scaron /scedilla /tcaron /zacute /hungarumlaut /zcaron /zdotaccent
|
||||
%% 0300
|
||||
/Racute /Aacute /Acircumflex /Abreve /Adieresis /Lacute /Cacute /Ccedilla
|
||||
/Ccaron /Eacute /Eogonek /Edieresis /Ecaron /Iacute /Icircumflex /Dcaron
|
||||
/Dcroat /Nacute /Ncaron /Oacute /Ocircumflex /Ohungarumlaut /Odieresis /multiply
|
||||
/Rcaron /Uring /Uacute /Uhungarumlaut /Udieresis /Yacute /Tcommaaccent /germandbls
|
||||
% 0340
|
||||
/racute /aacute /acircumflex /abreve /adieresis /lacute /cacute /ccedilla
|
||||
/ccaron /eacute /eogonek /edieresis /ecaron /iacute /icircumflex /dcaron
|
||||
/dcroat /nacute /ncaron /oacute /ocircumflex /ohungarumlaut /odieresis /divide
|
||||
/rcaron /uring /uacute /uhungarumlaut /udieresis /yacute /tcommaaccent /dotaccent
|
||||
]
|
||||
%% ISO8859-13 This should be a postscript fragment of an array of length exactly 256
|
||||
/ISOLatin7Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240
|
||||
/space /quotedblright /cent /sterling /currency /quotedblbase /brokenbar /section
|
||||
/Oslash /copyright /Rcommaaccent /guillemotleft /logicalnot /hyphen /registered /AE
|
||||
/degree /plusminus /twosuperior /threesuperior /quotedblleft /mu /paragraph /periodcentered
|
||||
/oslash /onesuperior /rcommaaccent /guillemotright /onequarter /onehalf /threequarters /ae
|
||||
%% 0300
|
||||
/Aogonek /Iogonek /Amacron /Cacute /Adieresis /Aring /Eogonek /Emacron
|
||||
/Ccaron /Eacute /Zacute /Edotaccent /Gcommaaccent /Kcommaaccent /Imacron /Lcommaaccent
|
||||
/Scaron /Nacute /Ncommaaccent /Oacute /Omacron /Otilde /Odieresis /multiply
|
||||
/Uogonek /Lslash /Sacute /Umacron /Udieresis /Zdotaccent /Zcaron /germandbls
|
||||
%% 0340
|
||||
/aogonek /iogonek /amacron /cacute /adieresis /aring /eogonek /emacron
|
||||
/ccaron /eacute /zacute /edotaccent /gcommaaccent /kcommaaccent /imacron /lcommaaccent
|
||||
/scaron /nacute /ncommaaccent /oacute /omacron /otilde /odieresis /divide
|
||||
/uogonek /lslash /sacute /umacron /udieresis /zdotaccent /zcaron /quoteright
|
||||
]
|
||||
%% ISO-8859-15 (draft?) Has Euro in place of currency, scaron, zcaon, oe ...
|
||||
/ISOLatin9Encoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent
|
||||
/dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron
|
||||
%% 0240
|
||||
/space /exclamdown /cent /sterling /Euro /yen /Scaron /section
|
||||
/scaron /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
|
||||
/degree /plusminus /twosuperior /threesuperior /Zcaron /mu /paragraph /periodcentered
|
||||
/zcaron /onesuperior /ordmasculine /guillemotright /OE /oe /Ydieresis /questiondown
|
||||
%% 0300
|
||||
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||
]
|
||||
%% KOI8-R This should be a postscript fragment of an array of length exactly 256
|
||||
/KOI8REncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dagger /ddagger
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /.notdef /degree /twosuperior /periodcentered /divide
|
||||
%% 0240
|
||||
/.notdef /.notdef /.notdef /afii10071 /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /afii10023 /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /copyright
|
||||
%% 0300
|
||||
/afii10096 /afii10065 /afii10066 /afii10088 /afii10069 /afii10070 /afii10086 /afii10068
|
||||
/afii10087 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080
|
||||
/afii10081 /afii10097 /afii10082 /afii10083 /afii10084 /afii10085 /afii10072 /afii10067
|
||||
/afii10094 /afii10093 /afii10073 /afii10090 /afii10095 /afii10091 /afii10089 /afii10092
|
||||
/afii10048 /afii10017 /afii10018 /afii10040 /afii10021 /afii10022 /afii10038 /afii10020
|
||||
/afii10039 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032
|
||||
/afii10033 /afii10049 /afii10034 /afii10035 /afii10036 /afii10037 /afii10024 /afii10019
|
||||
/afii10046 /afii10045 /afii10025 /afii10042 /afii10047 /afii10043 /afii10041 /afii10044
|
||||
]
|
||||
%% KOI8-U This should be a postscript fragment of an array of length exactly 256
|
||||
/KOI8UEncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dagger /ddagger
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /afii10050 /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /space /.notdef /degree /twosuperior /periodcentered /divide
|
||||
%% 0240
|
||||
/.notdef /.notdef /.notdef /afii10071 /afii10101 /.notdef /afii10103 /afii10104
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /afii10098 /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /afii10023 /afii10053 /.notdef /afii10055 /afii10056
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /afii10050 /.notdef /copyright
|
||||
%% 0300
|
||||
/afii10096 /afii10065 /afii10066 /afii10088 /afii10069 /afii10070 /afii10086 /afii10068
|
||||
/afii10087 /afii10074 /afii10075 /afii10076 /afii10077 /afii10078 /afii10079 /afii10080
|
||||
/afii10081 /afii10097 /afii10082 /afii10083 /afii10084 /afii10085 /afii10072 /afii10067
|
||||
/afii10094 /afii10093 /afii10073 /afii10090 /afii10095 /afii10091 /afii10089 /afii10092
|
||||
/afii10048 /afii10017 /afii10018 /afii10040 /afii10021 /afii10022 /afii10038 /afii10020
|
||||
/afii10039 /afii10026 /afii10027 /afii10028 /afii10029 /afii10030 /afii10031 /afii10032
|
||||
/afii10033 /afii10049 /afii10034 /afii10035 /afii10036 /afii10037 /afii10024 /afii10019
|
||||
/afii10046 /afii10045 /afii10025 /afii10042 /afii10047 /afii10043 /afii10041 /afii10044
|
||||
]
|
||||
%% As defined by PDF 1.3, but with /currency replaced by /Euro as per Apple
|
||||
/MacRomanEncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/Adieresis /Aring /Ccedilla /Eacute /Ntilde /Odieresis /Udieresis /aacute
|
||||
/agrave /acircumflex /adieresis /atilde /aring /ccedilla /eacute /egrave
|
||||
%% 0220
|
||||
/ecircumflex /edieresis /iacute /igrave /icircumflex /idieresis /ntilde /oacute
|
||||
/ograve /ocircumflex /odieresis /otilde /uacute /ugrave /ucircumflex /udieresis
|
||||
%% 0240
|
||||
/dagger /degree /cent /sterling /section /bullet /paragraph /germandbls
|
||||
/registered /copyright /trademark /acute /dieresis /.notdef /AE /Oslash
|
||||
/.notdef /plusminus /.notdef /.notdef /yen /mu /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /ordfeminine /ordmasculine /.notdef /ae /oslash
|
||||
%% 0300
|
||||
/questiondown /exclamdown /logicalnot /.notdef /florin /.notdef /.notdef /guillemotleft
|
||||
/guillemotright /ellipsis /space /Agrave /Atilde /Otilde /OE /oe
|
||||
/endash /emdash /quotedblleft /quotedblright /quoteleft /quoteright /divide /.notdef
|
||||
/ydieresis /Ydieresis /fraction /Euro /guilsinglleft /guilsinglright /fi /fl
|
||||
/daggerdbl /periodcentered /quotesinglbase /quotedblbase /perthousand /Acircumflex /Ecircumflex /Aacute
|
||||
/Edieresis /Egrave /Iacute /Icircumflex /Idieresis /Igrave /Oacute /Ocircumflex
|
||||
/.notdef /Ograve /Uacute /Ucircumflex /Ugrave /dotlessi /circumflex /tilde
|
||||
/macron /breve /dotaccent /ring /cedilla /hungarumlaut /ogonek /caron
|
||||
]
|
||||
%% As used by PDF 1.3
|
||||
/PDFDocEncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/breve /caron /circumflex /dotaccent /hungarumlaut /ogonek /ring /tilde
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/bullet /dagger /daggerdbl /ellipsis /emdash /endash /florin /fraction
|
||||
/guilsinglleft /guilsinglright /minus /perthousand /quotedblbase /quotedblleft /quotedblright /quoteleft
|
||||
%% 0220
|
||||
/quoteright /quotesinglbase /trademark /fi /fl /Lslash /OE /Scaron
|
||||
/Ydieresis /Zcaron /dotlessi /lslash /oe /scaron /zcaron /.notdef
|
||||
%% 0240
|
||||
/Euro /exclamdown /cent /sterling /currency /yen /brokenbar /section
|
||||
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /.notdef /registered /macron
|
||||
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
|
||||
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
|
||||
%% 0300
|
||||
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||
]
|
||||
%% This should be a postscript fragment of an array of length exactly 256
|
||||
/TeXtextEncoding [
|
||||
/minus /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon
|
||||
/Phi /Psi /Omega /ff /fi /fl /ffi /ffl
|
||||
/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring
|
||||
/cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
|
||||
%% 040
|
||||
/space /exclam /quotedblright /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /exclamdown /equal /questiondown /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
|
||||
%% 0140
|
||||
/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis
|
||||
%% 0200
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0220
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0240
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 0300
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
]
|
||||
%% As used by PDF 1.3, but with Euro at 128, and bullet only at 149
|
||||
%% as that is what Windows actually uses.
|
||||
/WinAnsiEncoding [
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
|
||||
%% 040
|
||||
/space /exclam /quotedbl /numbersign /dollar /percent /ampersand
|
||||
/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
|
||||
%% 060
|
||||
/zero /one /two /three /four /five /six /seven /eight /nine
|
||||
/colon /semicolon /less /equal /greater /question
|
||||
%% 0100
|
||||
/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V
|
||||
/W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
|
||||
%% 0140
|
||||
/grave /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t
|
||||
/u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef
|
||||
%% 0200
|
||||
/Euro /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl
|
||||
/circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /Zcaron /.notdef
|
||||
%% 0220
|
||||
/.notdef /quoteleft /quoteright /quotedblleft /quotedblright /bullet /endash /emdash
|
||||
/tilde /trademark /scaron /guilsinglright /oe /.notdef /zcaron /Ydieresis
|
||||
%% 0240
|
||||
/space /exclamdown /cent /sterling /currency /yen /brokenbar /section
|
||||
/dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron
|
||||
/degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered
|
||||
/cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown
|
||||
%% 0300
|
||||
/Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
|
||||
/Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis
|
||||
/Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply
|
||||
/Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls
|
||||
/agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla
|
||||
/egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis
|
||||
/eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide
|
||||
/oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis
|
||||
]
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AdobeStd.enc","start":0,"end":2094},{"filename":"/AdobeSym.enc","start":2094,"end":4608},{"filename":"/CP1250.enc","start":4608,"end":6832},{"filename":"/CP1251.enc","start":6832,"end":9221},{"filename":"/CP1253.enc","start":9221,"end":11406},{"filename":"/CP1257.enc","start":11406,"end":13653},{"filename":"/Cyrillic.enc","start":13653,"end":16002},{"filename":"/Greek.enc","start":16002,"end":18214},{"filename":"/ISOLatin1.enc","start":18214,"end":20427},{"filename":"/ISOLatin2.enc","start":20427,"end":22614},{"filename":"/ISOLatin7.enc","start":22614,"end":24886},{"filename":"/ISOLatin9.enc","start":24886,"end":27082},{"filename":"/KOI8-R.enc","start":27082,"end":29372},{"filename":"/KOI8-U.enc","start":29372,"end":31680},{"filename":"/MacRoman.enc","start":31680,"end":33942},{"filename":"/PDFDoc.enc","start":33942,"end":36149},{"filename":"/TeXtext.enc","start":36149,"end":38240},{"filename":"/WinAnsi.enc","start":38240,"end":40551}],"remote_package_size":40551}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/Montserrat/static/Montserrat-BoldItalic.ttf","start":0,"end":202492},{"filename":"/Montserrat/static/Montserrat-Medium.ttf","start":202492,"end":400596},{"filename":"/Roboto/LICENSE.txt","start":400596,"end":412156},{"filename":"/Roboto/Roboto-Medium.ttf","start":412156,"end":580800}],"remote_package_size":580800}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":3983},{"filename":"/aliases.rds","start":3983,"end":5596},{"filename":"/grDevices.rdb","start":5596,"end":404447},{"filename":"/grDevices.rdx","start":404447,"end":406221},{"filename":"/paths.rds","start":406221,"end":406973}],"remote_package_size":406973}
|
|
@ -1,650 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>R: The R Graphics Devices and Support for Colours and Fonts</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<link rel="stylesheet" type="text/css" href="R.css" />
|
||||
</head><body><div class="container">
|
||||
<h1> The R Graphics Devices and Support for Colours and Fonts
|
||||
<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
|
||||
</h1>
|
||||
<hr/>
|
||||
<div style="text-align: center;">
|
||||
<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
|
||||
<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
|
||||
</div><h2>Documentation for package ‘grDevices’ version 4.3.0</h2>
|
||||
|
||||
<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
|
||||
<li><a href="../demo">Code demos</a>. Use <a href="../../utils/help/demo">demo()</a> to run them.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Help Pages</h2>
|
||||
|
||||
|
||||
<p style="text-align: center;">
|
||||
<a href="# "> </a>
|
||||
<a href="#A">A</a>
|
||||
<a href="#B">B</a>
|
||||
<a href="#C">C</a>
|
||||
<a href="#D">D</a>
|
||||
<a href="#E">E</a>
|
||||
<a href="#F">F</a>
|
||||
<a href="#G">G</a>
|
||||
<a href="#H">H</a>
|
||||
<a href="#I">I</a>
|
||||
<a href="#J">J</a>
|
||||
<a href="#M">M</a>
|
||||
<a href="#N">N</a>
|
||||
<a href="#O">O</a>
|
||||
<a href="#P">P</a>
|
||||
<a href="#Q">Q</a>
|
||||
<a href="#R">R</a>
|
||||
<a href="#S">S</a>
|
||||
<a href="#T">T</a>
|
||||
<a href="#U">U</a>
|
||||
<a href="#W">W</a>
|
||||
<a href="#X">X</a>
|
||||
<a href="#misc">misc</a>
|
||||
</p>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grDevices-package.html">grDevices-package</a></td>
|
||||
<td>The R Graphics Devices and Support for Colours and Fonts</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="A">-- A --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="adjustcolor.html">adjustcolor</a></td>
|
||||
<td>Adjust Colors in One or More Directions Conveniently.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.graphicsAnnot.html">as.graphicsAnnot</a></td>
|
||||
<td>Coerce an Object for Graphics Annotation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.array</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.character</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.logical</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.matrix</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.numeric</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">as.raster.raw</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">atop</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="axisTicks.html">axisTicks</a></td>
|
||||
<td>Compute Pretty Axis Tick Scales</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="B">-- B --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">bar</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">bgroup</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2bitmap.html">bitmap</a></td>
|
||||
<td>Graphics Device for Bitmap Files via Ghostscript</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="densCols.html">blues9</a></td>
|
||||
<td>Colors for Smooth Density Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="png.html">bmp</a></td>
|
||||
<td>BMP, JPEG, PNG and TIFF graphics devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">bold</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">bolditalic</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="boxplot.stats.html">boxplot.stats</a></td>
|
||||
<td>Box Plot Statistics</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="bringToTop.html">bringToTop</a></td>
|
||||
<td>Assign Focus to a Window</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="C">-- C --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="cairoSymbolFont.html">cairoSymbolFont</a></td>
|
||||
<td>Specify a Symbol Font</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="cairo.html">cairo_pdf</a></td>
|
||||
<td>Cairographics-based SVG, PDF and PostScript Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="cairo.html">cairo_ps</a></td>
|
||||
<td>Cairographics-based SVG, PDF and PostScript Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="check.options.html">check.options</a></td>
|
||||
<td>Set Options with Consistency Checks</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="chull.html">chull</a></td>
|
||||
<td>Compute Convex Hull of a Set of Points</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Type1Font.html">CIDFont</a></td>
|
||||
<td>Type 1 and CID Fonts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="cm.html">cm</a></td>
|
||||
<td>Unit Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">cm.colors</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="col2rgb.html">col2rgb</a></td>
|
||||
<td>Color to RGB Conversion</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="make.rgb.html">colorConverter</a></td>
|
||||
<td>Create colour spaces</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="colorRamp.html">colorRamp</a></td>
|
||||
<td>Color interpolation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="colorRamp.html">colorRampPalette</a></td>
|
||||
<td>Color interpolation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="colors.html">colors</a></td>
|
||||
<td>Color Names</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="convertColor.html">colorspaces</a></td>
|
||||
<td>Convert between Colour Spaces</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="colors.html">colours</a></td>
|
||||
<td>Color Names</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="contourLines.html">contourLines</a></td>
|
||||
<td>Calculate Contour Lines</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="convertColor.html">convertColor</a></td>
|
||||
<td>Convert between Colour Spaces</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="D">-- D --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="densCols.html">densCols</a></td>
|
||||
<td>Colors for Smooth Density Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.capabilities.html">dev.capabilities</a></td>
|
||||
<td>Query Capabilities of the Current Graphics Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.capture.html">dev.capture</a></td>
|
||||
<td>Capture device output as a raster image</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2.html">dev.control</a></td>
|
||||
<td>Copy Graphics Between Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2.html">dev.copy</a></td>
|
||||
<td>Copy Graphics Between Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2.html">dev.copy2eps</a></td>
|
||||
<td>Copy Graphics Between Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2.html">dev.copy2pdf</a></td>
|
||||
<td>Copy Graphics Between Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.cur</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.flush.html">dev.flush</a></td>
|
||||
<td>Hold or Flush Output on an On-Screen Graphics Device.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.flush.html">dev.hold</a></td>
|
||||
<td>Hold or Flush Output on an On-Screen Graphics Device.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.interactive.html">dev.interactive</a></td>
|
||||
<td>Is the Current Graphics Device Interactive?</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.list</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.new</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.next</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.off</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.prev</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2.html">dev.print</a></td>
|
||||
<td>Copy Graphics Between Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">dev.set</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.size.html">dev.size</a></td>
|
||||
<td>Find Size of Device Surface</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev2bitmap.html">dev2bitmap</a></td>
|
||||
<td>Graphics Device for Bitmap Files via Ghostscript</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="devAskNewPage.html">devAskNewPage</a></td>
|
||||
<td>Prompt before New Page</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Devices.html">device</a></td>
|
||||
<td>List of Graphical Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.interactive.html">deviceIsInteractive</a></td>
|
||||
<td>Is the Current Graphics Device Interactive?</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Devices.html">Devices</a></td>
|
||||
<td>List of Graphical Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">displaystyle</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">dot</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="E">-- E --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="embedFonts.html">embedFonts</a></td>
|
||||
<td>Embed Fonts in PostScript and PDF</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="embedFonts.html">embedGlyphs</a></td>
|
||||
<td>Embed Fonts in PostScript and PDF</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="extendrange.html">extendrange</a></td>
|
||||
<td>Extend a Numerical Range by a Small Percentage</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="F">-- F --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">frac</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="G">-- G --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="getGraphicsEvent.html">getGraphicsEvent</a></td>
|
||||
<td>Wait for a mouse or keyboard event from a graphics window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="getGraphicsEvent.html">getGraphicsEventEnv</a></td>
|
||||
<td>Wait for a mouse or keyboard event from a graphics window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphAnchor</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphFont</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphFontList</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphHeight</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphHeightBottom</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphInfo</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphJust</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphJust.character</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphJust.GlyphJust</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphJust.numeric</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphWidth</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="glyphInfo.html">glyphWidthLeft</a></td>
|
||||
<td>Describe a Set of Typeset Glyphs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dev.html">graphics.off</a></td>
|
||||
<td>Control Multiple Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gray.html">gray</a></td>
|
||||
<td>Gray Level Specification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gray.colors.html">gray.colors</a></td>
|
||||
<td>Gray Color Palette</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grDevices-package.html">grDevices</a></td>
|
||||
<td>The R Graphics Devices and Support for Colours and Fonts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gray.html">grey</a></td>
|
||||
<td>Gray Level Specification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gray.colors.html">grey.colors</a></td>
|
||||
<td>Gray Color Palette</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">group</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grSoftVersion.html">grSoftVersion</a></td>
|
||||
<td>Report Versions of Graphics Software</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="H">-- H --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">hat</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="hcl.html">hcl</a></td>
|
||||
<td>HCL Color Specification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">hcl.colors</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">hcl.pals</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">heat.colors</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Hershey.html">Hershey</a></td>
|
||||
<td>Hershey Vector Fonts in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="hsv.html">hsv</a></td>
|
||||
<td>HSV Color Specification</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="I">-- I --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">inf</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">integral</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.raster.html">is.raster</a></td>
|
||||
<td>Create a Raster Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">italic</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="J">-- J --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="Japanese.html">Japanese</a></td>
|
||||
<td>Japanese characters in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="png.html">jpeg</a></td>
|
||||
<td>BMP, JPEG, PNG and TIFF graphics devices</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="M">-- M --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="make.rgb.html">make.rgb</a></td>
|
||||
<td>Create colour spaces</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="msgWindow.html">msgWindow</a></td>
|
||||
<td>Manipulate a Window</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="N">-- N --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="n2mfrow.html">n2mfrow</a></td>
|
||||
<td>Compute Default 'mfrow' From Number of Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="nclass.html">nclass.FD</a></td>
|
||||
<td>Compute the Number of Classes for a Histogram</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="nclass.html">nclass.scott</a></td>
|
||||
<td>Compute the Number of Classes for a Histogram</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="nclass.html">nclass.Sturges</a></td>
|
||||
<td>Compute the Number of Classes for a Histogram</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="O">-- O --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">over</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="P">-- P --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="palette.html">palette</a></td>
|
||||
<td>Set or View the Graphics Palette</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palette.html">palette.colors</a></td>
|
||||
<td>Set or View the Graphics Palette</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palette.html">palette.pals</a></td>
|
||||
<td>Set or View the Graphics Palette</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pdf.html">pdf</a></td>
|
||||
<td>PDF Graphics Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pdf.options.html">pdf.options</a></td>
|
||||
<td>Auxiliary Function to Set/View Defaults for Arguments of pdf</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="postscriptFonts.html">pdfFonts</a></td>
|
||||
<td>PostScript and PDF Font Families</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">phantom</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pictex.html">pictex</a></td>
|
||||
<td>A PicTeX Graphics Driver</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">plain</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">plotmath</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="png.html">png</a></td>
|
||||
<td>BMP, JPEG, PNG and TIFF graphics devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="postscript.html">postscript</a></td>
|
||||
<td>PostScript Graphics</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="postscriptFonts.html">postscriptFonts</a></td>
|
||||
<td>PostScript and PDF Font Families</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pretty.Date.html">pretty.Date</a></td>
|
||||
<td>Pretty Breakpoints for Date-Time Classes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pretty.Date.html">pretty.POSIXt</a></td>
|
||||
<td>Pretty Breakpoints for Date-Time Classes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="recordplot.html">print.recordedplot</a></td>
|
||||
<td>Record and Replay Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">print.SavedPlots</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="ps.options.html">ps.options</a></td>
|
||||
<td>Auxiliary Function to Set/View Defaults for Arguments of postscript</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="Q">-- Q --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="quartz.html">quartz</a></td>
|
||||
<td>macOS Quartz Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="quartz.html">quartz.options</a></td>
|
||||
<td>macOS Quartz Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="quartz.html">quartz.save</a></td>
|
||||
<td>macOS Quartz Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="quartzFonts.html">quartzFont</a></td>
|
||||
<td>Quartz Fonts Setup</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="quartzFonts.html">quartzFonts</a></td>
|
||||
<td>Quartz Fonts Setup</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="R">-- R --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">rainbow</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="recordGraphics.html">recordGraphics</a></td>
|
||||
<td>Record Graphics Operations</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="recordplot.html">recordPlot</a></td>
|
||||
<td>Record and Replay Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="recordplot.html">replayPlot</a></td>
|
||||
<td>Record and Replay Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rgb.html">rgb</a></td>
|
||||
<td>RGB Color Specification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rgb2hsv.html">rgb2hsv</a></td>
|
||||
<td>RGB to HSV Conversion</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">ring</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="S">-- S --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="savePlot.html">savePlot</a></td>
|
||||
<td>Save Cairo X11 Plot to File</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">scriptscriptstyle</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">scriptstyle</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="ps.options.html">setEPS</a></td>
|
||||
<td>Auxiliary Function to Set/View Defaults for Arguments of postscript</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="getGraphicsEvent.html">setGraphicsEventEnv</a></td>
|
||||
<td>Wait for a mouse or keyboard event from a graphics window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="getGraphicsEvent.html">setGraphicsEventHandlers</a></td>
|
||||
<td>Wait for a mouse or keyboard event from a graphics window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="ps.options.html">setPS</a></td>
|
||||
<td>Auxiliary Function to Set/View Defaults for Arguments of postscript</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="bringToTop.html">stayOnTop</a></td>
|
||||
<td>Assign Focus to a Window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">sup</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="cairo.html">svg</a></td>
|
||||
<td>Cairographics-based SVG, PDF and PostScript Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">symbol</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="T">-- T --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">terrain.colors</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">textstyle</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="png.html">tiff</a></td>
|
||||
<td>BMP, JPEG, PNG and TIFF graphics devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="palettes.html">topo.colors</a></td>
|
||||
<td>Color Palettes</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="trans3d.html">trans3d</a></td>
|
||||
<td>3D to 2D Transformation for Perspective Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Type1Font.html">Type1Font</a></td>
|
||||
<td>Type 1 and CID Fonts</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="U">-- U --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">underline</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="W">-- W --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">widehat</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotmath.html">widetilde</a></td>
|
||||
<td>Mathematical Annotation in R</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">win.graph</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">win.metafile</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">win.print</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">windows</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.options.html">windows.options</a></td>
|
||||
<td>Auxiliary Function to Set/View Defaults for Arguments of windows()</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windowsFonts.html">windowsFont</a></td>
|
||||
<td>Windows Fonts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windowsFonts.html">windowsFonts</a></td>
|
||||
<td>Windows Fonts</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="X">-- X --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="x11.html">X11</a></td>
|
||||
<td>X Window System Graphics (X11)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="x11.html">x11</a></td>
|
||||
<td>X Window System Graphics (X11)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="x11.html">X11.options</a></td>
|
||||
<td>X Window System Graphics (X11)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="x11Fonts.html">X11Font</a></td>
|
||||
<td>X11 Fonts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="x11Fonts.html">X11Fonts</a></td>
|
||||
<td>X11 Fonts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xfig.html">xfig</a></td>
|
||||
<td>XFig Graphics Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xy.coords.html">xy.coords</a></td>
|
||||
<td>Extracting Plotting Structures</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xyTable.html">xyTable</a></td>
|
||||
<td>Multiplicities of (x,y) Points, e.g., for a Sunflower Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xyz.coords.html">xyz.coords</a></td>
|
||||
<td>Extracting Plotting Structures</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="misc">-- misc --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="axisTicks.html">.axisPars</a></td>
|
||||
<td>Compute Pretty Axis Tick Scales</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="postscript.html">.ps.prolog</a></td>
|
||||
<td>PostScript Graphics</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="windows.html">[.SavedPlots</a></td>
|
||||
<td>Windows Graphics Devices</td></tr>
|
||||
</table>
|
||||
</div></body></html>
|
||||
@media screen {
|
||||
.container {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.rimage img { /* from knitr - for examples and demos */
|
||||
width: 96%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.katex { font-size: 1.1em; }
|
||||
|
||||
code {
|
||||
color: inherit;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.4;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background: white;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
background: white;
|
||||
color: rgb(50%, 0%, 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
background: white;
|
||||
color: rgb(55%, 55%, 55%);
|
||||
font-family: monospace;
|
||||
font-size: 1.4em; /* x-large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h4 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h5 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
h6 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
img.toplogo {
|
||||
width: 4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.arrow {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
span.acronym {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
span.env {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.option{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.pkg {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.samp{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.vignettes a:hover {
|
||||
background: rgb(85%, 85%, 85%);
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
span.rlang {
|
||||
font-family: Courier New, Courier;
|
||||
color: #666666;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":24177},{"filename":"/R.css","start":24177,"end":26021}],"remote_package_size":26021}
|
Binary file not shown.
|
@ -1,474 +0,0 @@
|
|||
|
||||
cols <- t(col2rgb(palette()))
|
||||
|
||||
## One full space1-XYZ-space2 conversion
|
||||
|
||||
convertColor(cols, 'sRGB', 'Lab', scale.in=255)
|
||||
|
||||
## to XYZ, then to every defined space
|
||||
|
||||
XYZ <- convertColor(cols, 'sRGB', 'XYZ', scale.in=255)
|
||||
fromXYZ <- vapply(
|
||||
names(colorspaces), convertColor, FUN.VALUE=XYZ,
|
||||
from='XYZ', color=XYZ, clip=NA
|
||||
)
|
||||
round(fromXYZ, 4)
|
||||
|
||||
## Back to XYZ, delta to original XYZ should be close to zero
|
||||
|
||||
tol <- 1e-5
|
||||
toXYZ <- vapply(
|
||||
dimnames(fromXYZ)[[3]],
|
||||
function(x) all(abs(convertColor(fromXYZ[,,x], from=x, to='XYZ') - XYZ)<tol),
|
||||
logical(1)
|
||||
)
|
||||
toXYZ
|
||||
stopifnot(all(toXYZ | is.na(toXYZ)))
|
||||
|
||||
## Test Apple and CIE RGB on smaller gamuts since they clip
|
||||
|
||||
XYZ2 <- XYZ * .7 + .15
|
||||
fromXYZ2 <- vapply(
|
||||
c('Apple RGB', 'CIE RGB'), convertColor, FUN.VALUE=XYZ2,
|
||||
from='XYZ', color=XYZ2, clip=NA
|
||||
)
|
||||
round(fromXYZ2, 4)
|
||||
toXYZ2 <- vapply(
|
||||
dimnames(fromXYZ2)[[3]],
|
||||
function(x)
|
||||
all(abs(convertColor(fromXYZ2[,,x], from=x, to='XYZ') - XYZ2)<tol),
|
||||
logical(1)
|
||||
)
|
||||
stopifnot(all(toXYZ2))
|
||||
|
||||
# Seg.fault in R 3.5.3 -- 4.1.1 (but not 3.4.4) -- PR#18183
|
||||
stopifnot(identical(character(0),
|
||||
gray(numeric(), alpha=1/2)))
|
||||
|
||||
## xy.coords() and xyz.coords() -- gets *classed* warning
|
||||
tools::assertWarning(xy.coords(-2:10, log = "y"), verbose=TRUE)
|
||||
op <- options(warn = 2)# ==> warnings are errors
|
||||
suppressWarnings(xy.coords(-2:10, log = "y"), classes="log_le_0") -> xy
|
||||
stopifnot(identical(xy$y, c(rep(NA_real_,3), 1:10)))
|
||||
options(op) # (reverting)
|
||||
tools::assertWarning(xy.coords(-2:10, log = "y"), verbose=TRUE)
|
||||
## [Bug 18476] alpha handling in palette functions (23 Feb 2023)
|
||||
## https://bugs.r-project.org/show_bug.cgi?id=18476
|
||||
## Attachment 3131 https://bugs.r-project.org/attachment.cgi?id=3131
|
||||
## and comment #3 by Achim Zeileis
|
||||
|
||||
|
||||
## from attachment #3131 :
|
||||
check_alpha <- function(colors = "topo.colors", ncolor = 3, nalpha = 3, ...) {
|
||||
## alpha sequence of length nalpha
|
||||
alpha <- seq(0, 1, length.out = nalpha)
|
||||
|
||||
## generate colors with alpha=...
|
||||
col1 <- tryCatch(do.call(colors, c(list(n = ncolor, alpha = alpha), list(...))),
|
||||
error = identity)
|
||||
if(inherits(col1, "error")) return(FALSE)
|
||||
|
||||
## generate colors without alpha= and add manually afterwards
|
||||
alpha <- format(as.hexmode(round(alpha * 255 + 0.0001)), width = 2L, upper.case = TRUE)
|
||||
col2 <- paste0(do.call(colors, c(list(n = ncolor), list(...))),
|
||||
rep_len(alpha, ncolor))
|
||||
|
||||
## check whether both strategies yield identical output
|
||||
identical(col1, col2)
|
||||
}
|
||||
|
||||
expndGrid <- function(...)
|
||||
expand.grid(..., KEEP.OUT.ATTRS = FALSE, stringsAsFactors = FALSE)
|
||||
|
||||
iSamp <- function(n, f=1/4, nS = max(min(n, 24L), f*n), full = interactive())
|
||||
if(full) seq_len(n) else sample.int(n, nS)
|
||||
|
||||
chkALLalpha <- function(d)
|
||||
vapply(iSamp(nrow(d)), function(i) do.call(check_alpha, d[i,]), NA)
|
||||
|
||||
## Check old palettes ------------------
|
||||
d1 <- expndGrid(colors = c("rainbow", "topo.colors", "terrain.colors",
|
||||
"heat.colors", "cm.colors", "gray.colors"),
|
||||
ncolor = c(1, 3, 9, 100),
|
||||
nalpha = c(2, 3, 9, 100))
|
||||
table(L <- chkALLalpha(d1)) ## R-4.2.x: 71 FALSE, 25 TRUE -- now 96 TRUE
|
||||
if(!all(L)) stop("---> not all ok")
|
||||
|
||||
|
||||
## Check the new palettes -----------------
|
||||
|
||||
d2 <- expndGrid(colors = "palette.colors",
|
||||
ncolor = c(1, 3, 7),
|
||||
nalpha = c(2, 3, 7),
|
||||
palette = print(palette.pals()))
|
||||
table(L <- chkALLalpha(d2)) ## R-4.2.x: 64 FALSE, 80 TRUE -- now 144 TRUE
|
||||
if(!all(L)) stop("---> not all ok")
|
||||
|
||||
d3 <- expndGrid(colors = "hcl.colors",
|
||||
ncolor = c(1, 3, 9, 100),
|
||||
nalpha = c(2, 3, 9, 100),
|
||||
palette = print(hcl.pals()))
|
||||
table(L <- chkALLalpha(d3)) ## R-4.2.x: 1057 FALSE, 783 TRUE -- now 1840 TRUE
|
||||
if(!all(L)) stop("---> not all ok")
|
||||
## tests of the fonts in the postscript() device.
|
||||
|
||||
testit <- function(family, encoding="default")
|
||||
{
|
||||
postscript("ps-tests.ps", height=7, width=7, family=family,
|
||||
encoding=encoding)
|
||||
plot(1:10, type="n")
|
||||
text(5, 9, "Some text")
|
||||
text(5, 8 , expression(italic("italic")))
|
||||
text(5, 7 , expression(bold("bold")))
|
||||
text(5, 6 , expression(bolditalic("bold & italic")))
|
||||
text(8, 3, expression(paste(frac(1, sigma*sqrt(2*pi)), " ",
|
||||
plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})))
|
||||
dev.off()
|
||||
}
|
||||
|
||||
testit("Helvetica")
|
||||
testit("AvantGarde")
|
||||
testit("Bookman")
|
||||
testit("Courier")
|
||||
testit("Helvetica-Narrow")
|
||||
testit("NewCenturySchoolbook")
|
||||
testit("Palatino")
|
||||
testit("Times")
|
||||
|
||||
testit("URWGothic")
|
||||
testit("URWBookman")
|
||||
testit("NimbusMon")
|
||||
testit("NimbusSan")
|
||||
testit("NimbusSanCond")
|
||||
testit("CenturySch")
|
||||
testit("URWPalladio")
|
||||
testit("NimbusRom")
|
||||
testit("URWHelvetica")
|
||||
testit("URWTimes")
|
||||
|
||||
testit("ComputerModern", "TeXtext.enc")
|
||||
|
||||
unlink("ps-tests.ps")
|
||||
|
||||
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
|
||||
Copyright (C) 2022 The R Foundation for Statistical Computing
|
||||
Platform: x86_64-pc-linux-gnu (64-bit)
|
||||
|
||||
R is free software and comes with ABSOLUTELY NO WARRANTY.
|
||||
You are welcome to redistribute it under certain conditions.
|
||||
Type 'license()' or 'licence()' for distribution details.
|
||||
|
||||
R is a collaborative project with many contributors.
|
||||
Type 'contributors()' for more information and
|
||||
'citation()' on how to cite R or R packages in publications.
|
||||
|
||||
Type 'demo()' for some demos, 'help()' for on-line help, or
|
||||
'help.start()' for an HTML browser interface to help.
|
||||
Type 'q()' to quit R.
|
||||
|
||||
> ## tests of the fonts in the postscript() device.
|
||||
>
|
||||
> testit <- function(family, encoding="default")
|
||||
+ {
|
||||
+ postscript("ps-tests.ps", height=7, width=7, family=family,
|
||||
+ encoding=encoding)
|
||||
+ plot(1:10, type="n")
|
||||
+ text(5, 9, "Some text")
|
||||
+ text(5, 8 , expression(italic("italic")))
|
||||
+ text(5, 7 , expression(bold("bold")))
|
||||
+ text(5, 6 , expression(bolditalic("bold & italic")))
|
||||
+ text(8, 3, expression(paste(frac(1, sigma*sqrt(2*pi)), " ",
|
||||
+ plain(e)^{frac(-(x-mu)^2, 2*sigma^2)})))
|
||||
+ dev.off()
|
||||
+ }
|
||||
>
|
||||
> testit("Helvetica")
|
||||
null device
|
||||
1
|
||||
> testit("AvantGarde")
|
||||
null device
|
||||
1
|
||||
> testit("Bookman")
|
||||
null device
|
||||
1
|
||||
> testit("Courier")
|
||||
null device
|
||||
1
|
||||
> testit("Helvetica-Narrow")
|
||||
null device
|
||||
1
|
||||
> testit("NewCenturySchoolbook")
|
||||
null device
|
||||
1
|
||||
> testit("Palatino")
|
||||
null device
|
||||
1
|
||||
> testit("Times")
|
||||
null device
|
||||
1
|
||||
>
|
||||
> testit("URWGothic")
|
||||
null device
|
||||
1
|
||||
> testit("URWBookman")
|
||||
null device
|
||||
1
|
||||
> testit("NimbusMon")
|
||||
null device
|
||||
1
|
||||
> testit("NimbusSan")
|
||||
null device
|
||||
1
|
||||
> testit("NimbusSanCond")
|
||||
null device
|
||||
1
|
||||
> testit("CenturySch")
|
||||
null device
|
||||
1
|
||||
> testit("URWPalladio")
|
||||
null device
|
||||
1
|
||||
> testit("NimbusRom")
|
||||
null device
|
||||
1
|
||||
> testit("URWHelvetica")
|
||||
null device
|
||||
1
|
||||
> testit("URWTimes")
|
||||
null device
|
||||
1
|
||||
>
|
||||
> testit("ComputerModern", "TeXtext.enc")
|
||||
null device
|
||||
1
|
||||
>
|
||||
> unlink("ps-tests.ps")
|
||||
>
|
||||
> proc.time()
|
||||
user system elapsed
|
||||
0.995 0.084 1.062
|
||||
## From: Winston Chang
|
||||
## To: R Devel List ...@r-project.org
|
||||
## Subject: [Rd] recordPlot/replayPlot not working with saveRDS/readRDS
|
||||
## Date: Mon, 2 Apr 2018 12:23:06 -0500
|
||||
|
||||
if (FALSE) { # bitmap png() device is optional for webR
|
||||
# Save displaylist for a simple plot
|
||||
png('test.png')
|
||||
dev.control(displaylist ="enable")
|
||||
plot(1:5, 1:5)
|
||||
r <- recordPlot()
|
||||
dev.off()
|
||||
|
||||
# Replay plot. This works.
|
||||
png('test1.png')
|
||||
replayPlot(r)
|
||||
dev.off()
|
||||
|
||||
## Save the plot and load it, then replay it (in *same* R session):
|
||||
## Now works, too
|
||||
saveRDS(r, 'recordedplot.rds')
|
||||
r2 <- readRDS('recordedplot.rds')
|
||||
png('test2.png')
|
||||
replayPlot(r2)
|
||||
## Gave Error: NULL value passed as symbol address
|
||||
dev.off()
|
||||
|
||||
## Now check the three PNG graphics files do not differ:
|
||||
(files <- dir(pattern = "test.*[.]png"))
|
||||
tt <- lapply(files, readBin, what = "raw", n = 2^12)
|
||||
lengths(tt)
|
||||
sapply(tt, head)
|
||||
stopifnot(
|
||||
identical(tt[[1]], tt[[2]]),
|
||||
identical(tt[[3]], tt[[2]]))
|
||||
}
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
## tests for the xfig device
|
||||
|
||||
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
|
||||
xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
|
||||
unlink("xfig-tests.fig")
|
||||
|
||||
|
||||
R Under development (unstable) (2022-03-19 r81942) -- "Unsuffered Consequences"
|
||||
Copyright (C) 2022 The R Foundation for Statistical Computing
|
||||
Platform: x86_64-pc-linux-gnu (64-bit)
|
||||
|
||||
R is free software and comes with ABSOLUTELY NO WARRANTY.
|
||||
You are welcome to redistribute it under certain conditions.
|
||||
Type 'license()' or 'licence()' for distribution details.
|
||||
|
||||
R is a collaborative project with many contributors.
|
||||
Type 'contributors()' for more information and
|
||||
'citation()' on how to cite R or R packages in publications.
|
||||
|
||||
Type 'demo()' for some demos, 'help()' for on-line help, or
|
||||
'help.start()' for an HTML browser interface to help.
|
||||
Type 'q()' to quit R.
|
||||
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
> ## tests for the xfig device
|
||||
>
|
||||
>
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=TRUE,textspecial=FALSE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=TRUE)
|
||||
>
|
||||
> xfig("xfig-tests.fig",onefile=TRUE,defaultfont=FALSE,textspecial=FALSE)
|
||||
>
|
||||
> unlink("xfig-tests.fig")
|
||||
>
|
||||
>
|
||||
> proc.time()
|
||||
user system elapsed
|
||||
0.392 0.073 0.446
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/convertColor-tests.R","start":0,"end":1131},{"filename":"/grDev-tsts.R","start":1131,"end":1517},{"filename":"/palettes-tests.R","start":1517,"end":3689},{"filename":"/ps-tests.R","start":3689,"end":4661},{"filename":"/ps-tests.Rout.save","start":4661,"end":6932},{"filename":"/saved-recordPlot.R","start":6932,"end":7868},{"filename":"/xfig-tests.R","start":7868,"end":9944},{"filename":"/xfig-tests.Rout.save","start":9944,"end":12915}],"remote_package_size":12915}
|
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/Hershey.R","start":0,"end":19972},{"filename":"/Japanese.R","start":19972,"end":54491},{"filename":"/graphics.R","start":54491,"end":59530},{"filename":"/image.R","start":59530,"end":60635},{"filename":"/persp.R","start":60635,"end":63426},{"filename":"/plotmath.R","start":63426,"end":72185}],"remote_package_size":72185}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":2565},{"filename":"/aliases.rds","start":2565,"end":3588},{"filename":"/figures/mai.pdf","start":3588,"end":6129},{"filename":"/figures/mai.png","start":6129,"end":10796},{"filename":"/figures/oma.pdf","start":10796,"end":14559},{"filename":"/figures/oma.png","start":14559,"end":19673},{"filename":"/figures/pch.pdf","start":19673,"end":24667},{"filename":"/figures/pch.png","start":24667,"end":33954},{"filename":"/figures/pch.svg","start":33954,"end":61141},{"filename":"/graphics.rdb","start":61141,"end":538590},{"filename":"/graphics.rdx","start":538590,"end":540247},{"filename":"/paths.rds","start":540247,"end":540902}],"remote_package_size":540902}
|
|
@ -1,352 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>R: The R Graphics Package</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<link rel="stylesheet" type="text/css" href="R.css" />
|
||||
</head><body><div class="container">
|
||||
<h1> The R Graphics Package
|
||||
<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
|
||||
</h1>
|
||||
<hr/>
|
||||
<div style="text-align: center;">
|
||||
<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
|
||||
<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
|
||||
</div><h2>Documentation for package ‘graphics’ version 4.3.0</h2>
|
||||
|
||||
<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
|
||||
<li><a href="../demo">Code demos</a>. Use <a href="../../utils/help/demo">demo()</a> to run them.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Help Pages</h2>
|
||||
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="graphics-package.html">graphics-package</a></td>
|
||||
<td>The R Graphics Package</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="filled.contour.html">.filled.contour</a></td>
|
||||
<td>Level (Contour) Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="par.html">.Pars</a></td>
|
||||
<td>Set or Query Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="abline.html">abline</a></td>
|
||||
<td>Add Straight Lines to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="arrows.html">arrows</a></td>
|
||||
<td>Add Arrows to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.window.html">asp</a></td>
|
||||
<td>Set up World Coordinates for Graphics Window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="assocplot.html">assocplot</a></td>
|
||||
<td>Association Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="zAxis.html">Axis</a></td>
|
||||
<td>Generic Function to Add an Axis to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="axis.html">axis</a></td>
|
||||
<td>Add an Axis to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="axis.POSIXct.html">axis.POSIXct</a></td>
|
||||
<td>Date and Date-time Plotting Functions</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="axTicks.html">axTicks</a></td>
|
||||
<td>Compute Axis Tickmark Locations</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="barplot.html">barplot</a></td>
|
||||
<td>Bar Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="box.html">box</a></td>
|
||||
<td>Draw a Box around a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="boxplot.html">boxplot</a></td>
|
||||
<td>Box Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="boxplot.matrix.html">boxplot.matrix</a></td>
|
||||
<td>Draw a Boxplot for each Column (Row) of a Matrix</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="bxp.html">bxp</a></td>
|
||||
<td>Draw Box Plots from Summaries</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="cdplot.html">cdplot</a></td>
|
||||
<td>Conditional Density Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="clip.html">clip</a></td>
|
||||
<td>Set Clipping Region</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="screen.html">close.screen</a></td>
|
||||
<td>Creating and Controlling Multiple Screens on a Single Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="coplot.html">co.intervals</a></td>
|
||||
<td>Conditioning Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="contour.html">contour</a></td>
|
||||
<td>Display Contours</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="coplot.html">coplot</a></td>
|
||||
<td>Conditioning Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="curve.html">curve</a></td>
|
||||
<td>Draw Function Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="dotchart.html">dotchart</a></td>
|
||||
<td>Cleveland's Dot Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="screen.html">erase.screen</a></td>
|
||||
<td>Creating and Controlling Multiple Screens on a Single Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="filled.contour.html">filled.contour</a></td>
|
||||
<td>Level (Contour) Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="fourfoldplot.html">fourfoldplot</a></td>
|
||||
<td>Fourfold Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="frame.html">frame</a></td>
|
||||
<td>Create / Start a New Plot Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="par.html">graphical parameter</a></td>
|
||||
<td>Set or Query Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="par.html">graphical parameters</a></td>
|
||||
<td>Set or Query Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="graphics-package.html">graphics</a></td>
|
||||
<td>The R Graphics Package</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="convertXY.html">grconvertX</a></td>
|
||||
<td>Convert between Graphics Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="convertXY.html">grconvertY</a></td>
|
||||
<td>Convert between Graphics Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.html">grid</a></td>
|
||||
<td>Add Grid to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="hist.html">hist</a></td>
|
||||
<td>Histograms</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="hist.POSIXt.html">hist.POSIXt</a></td>
|
||||
<td>Histogram of a Date or Date-Time Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="identify.html">identify</a></td>
|
||||
<td>Identify Points in a Scatter Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="image.html">image</a></td>
|
||||
<td>Display a Color Image</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="layout.html">layout</a></td>
|
||||
<td>Specifying Complex Plot Arrangements</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="layout.html">lcm</a></td>
|
||||
<td>Specifying Complex Plot Arrangements</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="legend.html">legend</a></td>
|
||||
<td>Add Legends to Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="lines.html">lines</a></td>
|
||||
<td>Add Connected Line Segments to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.formula.html">lines.formula</a></td>
|
||||
<td>Formula Notation for Scatterplots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plothistogram.html">lines.histogram</a></td>
|
||||
<td>Plot Histograms</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.table.html">lines.table</a></td>
|
||||
<td>Plot Methods for 'table' Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="locator.html">locator</a></td>
|
||||
<td>Graphical Input</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="matplot.html">matlines</a></td>
|
||||
<td>Plot Columns of Matrices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="matplot.html">matplot</a></td>
|
||||
<td>Plot Columns of Matrices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="matplot.html">matpoints</a></td>
|
||||
<td>Plot Columns of Matrices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="mosaicplot.html">mosaicplot</a></td>
|
||||
<td>Mosaic Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="mtext.html">mtext</a></td>
|
||||
<td>Write Text into the Margins of a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pairs.html">pairs</a></td>
|
||||
<td>Scatterplot Matrices</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="panel.smooth.html">panel.smooth</a></td>
|
||||
<td>Simple Panel Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="par.html">par</a></td>
|
||||
<td>Set or Query Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="points.html">pch</a></td>
|
||||
<td>Add Points to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="persp.html">persp</a></td>
|
||||
<td>Perspective Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="pie.html">pie</a></td>
|
||||
<td>Pie Charts</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.dataframe.html">plot.data.frame</a></td>
|
||||
<td>Plot Method for Data Frames</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.default.html">plot.default</a></td>
|
||||
<td>The Default Scatterplot Function</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.design.html">plot.design</a></td>
|
||||
<td>Plot Univariate Effects of a Design or Model</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.factor.html">plot.factor</a></td>
|
||||
<td>Plotting Factor Variables</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.formula.html">plot.formula</a></td>
|
||||
<td>Formula Notation for Scatterplots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="curve.html">plot.function</a></td>
|
||||
<td>Draw Function Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plothistogram.html">plot.histogram</a></td>
|
||||
<td>Plot Histograms</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="frame.html">plot.new</a></td>
|
||||
<td>Create / Start a New Plot Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.raster.html">plot.raster</a></td>
|
||||
<td>Plotting Raster Images</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.table.html">plot.table</a></td>
|
||||
<td>Plot Methods for 'table' Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.window.html">plot.window</a></td>
|
||||
<td>Set up World Coordinates for Graphics Window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.xy.html">plot.xy</a></td>
|
||||
<td>Basic Internal Plot Function</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="points.html">points</a></td>
|
||||
<td>Add Points to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.formula.html">points.formula</a></td>
|
||||
<td>Formula Notation for Scatterplots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.table.html">points.table</a></td>
|
||||
<td>Plot Methods for 'table' Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="polygon.html">polygon</a></td>
|
||||
<td>Polygon Drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="polypath.html">polypath</a></td>
|
||||
<td>Path Drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rasterImage.html">rasterImage</a></td>
|
||||
<td>Draw One or More Raster Images</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rect.html">rect</a></td>
|
||||
<td>Draw One or More Rectangles</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="rug.html">rug</a></td>
|
||||
<td>Add a Rug to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="screen.html">screen</a></td>
|
||||
<td>Creating and Controlling Multiple Screens on a Single Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="segments.html">segments</a></td>
|
||||
<td>Add Line Segments to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="smoothScatter.html">smoothScatter</a></td>
|
||||
<td>Scatterplots with Smoothed Densities Color Representation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="spineplot.html">spineplot</a></td>
|
||||
<td>Spine Plots and Spinograms</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="screen.html">split.screen</a></td>
|
||||
<td>Creating and Controlling Multiple Screens on a Single Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stars.html">stars</a></td>
|
||||
<td>Star (Spider/Radar) Plots and Segment Diagrams</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stem.html">stem</a></td>
|
||||
<td>Stem-and-Leaf Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="strwidth.html">strheight</a></td>
|
||||
<td>Plotting Dimensions of Character Strings and Math Expressions</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stripchart.html">stripchart</a></td>
|
||||
<td>1-D Scatter Plots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="strwidth.html">strwidth</a></td>
|
||||
<td>Plotting Dimensions of Character Strings and Math Expressions</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="sunflowerplot.html">sunflowerplot</a></td>
|
||||
<td>Produce a Sunflower Scatter Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="symbols.html">symbols</a></td>
|
||||
<td>Draw Symbols (Circles, Squares, Stars, Thermometers, Boxplots)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="text.html">text</a></td>
|
||||
<td>Add Text to a Plot</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.formula.html">text.formula</a></td>
|
||||
<td>Formula Notation for Scatterplots</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="title.html">title</a></td>
|
||||
<td>Plot Annotation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="units.html">xinch</a></td>
|
||||
<td>Graphical Units</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.window.html">xlim</a></td>
|
||||
<td>Set up World Coordinates for Graphics Window</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xspline.html">xspline</a></td>
|
||||
<td>Draw an X-spline</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="units.html">xyinch</a></td>
|
||||
<td>Graphical Units</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="units.html">yinch</a></td>
|
||||
<td>Graphical Units</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plot.window.html">ylim</a></td>
|
||||
<td>Set up World Coordinates for Graphics Window</td></tr>
|
||||
</table>
|
||||
</div></body></html>
|
||||
@media screen {
|
||||
.container {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.rimage img { /* from knitr - for examples and demos */
|
||||
width: 96%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.katex { font-size: 1.1em; }
|
||||
|
||||
code {
|
||||
color: inherit;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.4;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background: white;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
background: white;
|
||||
color: rgb(50%, 0%, 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
background: white;
|
||||
color: rgb(55%, 55%, 55%);
|
||||
font-family: monospace;
|
||||
font-size: 1.4em; /* x-large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h4 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h5 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
h6 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
img.toplogo {
|
||||
width: 4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.arrow {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
span.acronym {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
span.env {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.option{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.pkg {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.samp{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.vignettes a:hover {
|
||||
background: rgb(85%, 85%, 85%);
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
span.rlang {
|
||||
font-family: Courier New, Courier;
|
||||
color: #666666;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":12159},{"filename":"/R.css","start":12159,"end":14003}],"remote_package_size":14003}
|
File diff suppressed because it is too large
Load diff
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/DivByZero.txt","start":0,"end":2211},{"filename":"/changes.txt","start":2211,"end":64446},{"filename":"/displaylist.pdf","start":64446,"end":120524},{"filename":"/frame.pdf","start":120524,"end":183018},{"filename":"/grid.pdf","start":183018,"end":286625},{"filename":"/grobs.pdf","start":286625,"end":337960},{"filename":"/interactive.pdf","start":337960,"end":366443},{"filename":"/locndimn.pdf","start":366443,"end":398458},{"filename":"/moveline.pdf","start":398458,"end":427697},{"filename":"/nonfinite.pdf","start":427697,"end":454272},{"filename":"/plotexample.pdf","start":454272,"end":559088},{"filename":"/rotated.pdf","start":559088,"end":611710},{"filename":"/saveload.pdf","start":611710,"end":649052},{"filename":"/sharing.pdf","start":649052,"end":676393},{"filename":"/viewports.pdf","start":676393,"end":742984}],"remote_package_size":742984}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/AnIndex","start":0,"end":6348},{"filename":"/aliases.rds","start":6348,"end":8394},{"filename":"/grid.rdb","start":8394,"end":320940},{"filename":"/grid.rdx","start":320940,"end":323171},{"filename":"/paths.rds","start":323171,"end":324040}],"remote_package_size":324040}
|
|
@ -1,778 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head><title>R: The Grid Graphics Package</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<link rel="stylesheet" type="text/css" href="R.css" />
|
||||
</head><body><div class="container">
|
||||
<h1> The Grid Graphics Package
|
||||
<img class="toplogo" src="../../../doc/html/Rlogo.svg" alt="[R logo]" />
|
||||
</h1>
|
||||
<hr/>
|
||||
<div style="text-align: center;">
|
||||
<a href="../../../doc/html/packages.html"><img class="arrow" src="../../../doc/html/left.jpg" alt="[Up]" /></a>
|
||||
<a href="../../../doc/html/index.html"><img class="arrow" src="../../../doc/html/up.jpg" alt="[Top]" /></a>
|
||||
</div><h2>Documentation for package ‘grid’ version 4.3.0</h2>
|
||||
|
||||
<ul><li><a href="../DESCRIPTION">DESCRIPTION file</a>.</li>
|
||||
<li><a href="../doc/index.html">User guides, package vignettes and other documentation.</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>Help Pages</h2>
|
||||
|
||||
|
||||
<p style="text-align: center;">
|
||||
<a href="# "> </a>
|
||||
<a href="#A">A</a>
|
||||
<a href="#B">B</a>
|
||||
<a href="#C">C</a>
|
||||
<a href="#D">D</a>
|
||||
<a href="#E">E</a>
|
||||
<a href="#F">F</a>
|
||||
<a href="#G">G</a>
|
||||
<a href="#H">H</a>
|
||||
<a href="#I">I</a>
|
||||
<a href="#L">L</a>
|
||||
<a href="#M">M</a>
|
||||
<a href="#N">N</a>
|
||||
<a href="#P">P</a>
|
||||
<a href="#R">R</a>
|
||||
<a href="#S">S</a>
|
||||
<a href="#T">T</a>
|
||||
<a href="#U">U</a>
|
||||
<a href="#V">V</a>
|
||||
<a href="#W">W</a>
|
||||
<a href="#X">X</a>
|
||||
<a href="#Y">Y</a>
|
||||
</p>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid-package.html">grid-package</a></td>
|
||||
<td>The Grid Graphics Package</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="A">-- A --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="absolute.size.html">absolute.size</a></td>
|
||||
<td>Absolute Size of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.add.html">addGrob</a></td>
|
||||
<td>Add a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gEdit.html">applyEdit</a></td>
|
||||
<td>Create and Apply Edit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gEdit.html">applyEdits</a></td>
|
||||
<td>Create and Apply Edit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.curve.html">arcCurvature</a></td>
|
||||
<td>Draw a Curve Between Locations</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="arrow.html">arrow</a></td>
|
||||
<td>Describe arrows to add to a line.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="as.mask.html">as.mask</a></td>
|
||||
<td>Define a Soft Mask</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">as.path</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="widthDetails.html">ascentDetails</a></td>
|
||||
<td>Width and Height of a grid grob</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="B">-- B --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.bezier.html">bezierGrob</a></td>
|
||||
<td>Draw a Bezier Curve</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xsplinePoints.html">bezierPoints</a></td>
|
||||
<td>Return the points that would be used to draw an Xspline (or a Bezier curve).</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="C">-- C --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="calcStringMetric.html">calcStringMetric</a></td>
|
||||
<td>Calculate Metric Information for Text</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">childNames</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.circle.html">circleGrob</a></td>
|
||||
<td>Draw a Circle</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.clip.html">clipGrob</a></td>
|
||||
<td>Set the Clipping Region</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.convert.html">convertHeight</a></td>
|
||||
<td>Convert Between Different grid Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.convert.html">convertUnit</a></td>
|
||||
<td>Convert Between Different grid Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.convert.html">convertWidth</a></td>
|
||||
<td>Convert Between Different grid Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.convert.html">convertX</a></td>
|
||||
<td>Convert Between Different grid Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.convert.html">convertY</a></td>
|
||||
<td>Convert Between Different grid Coordinate Systems</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.parent</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.rotation</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.transform</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.viewport</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.vpPath</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="current.viewport.html">current.vpTree</a></td>
|
||||
<td>Get the Current Grid Viewport (Tree)</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.curve.html">curveGrob</a></td>
|
||||
<td>Draw a Curve Between Locations</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="D">-- D --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="dataViewport.html">dataViewport</a></td>
|
||||
<td>Create a Viewport with Scales based on Data</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">defineGrob</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">defnRotate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">defnScale</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">defnTranslate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.delay.html">delayGrob</a></td>
|
||||
<td>Encapsulate calculations and generating a grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="depth.html">depth</a></td>
|
||||
<td>Determine the number of levels in an object.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="depth.html">depth.path</a></td>
|
||||
<td>Determine the number of levels in an object.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="depth.html">depth.viewport</a></td>
|
||||
<td>Determine the number of levels in an object.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="widthDetails.html">descentDetails</a></td>
|
||||
<td>Width and Height of a grid grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="deviceLoc.html">deviceDim</a></td>
|
||||
<td>Convert Viewport Location to Device Location</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="deviceLoc.html">deviceLoc</a></td>
|
||||
<td>Convert Viewport Location to Device Location</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewports.html">downViewport</a></td>
|
||||
<td>Maintaining and Navigating the Grid Viewport Tree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="drawDetails.html">drawDetails</a></td>
|
||||
<td>Customising grid Drawing</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="E">-- E --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="editDetails.html">editDetails</a></td>
|
||||
<td>Customising grid Editing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.edit.html">editGrob</a></td>
|
||||
<td>Edit the Description of a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="editViewport.html">editViewport</a></td>
|
||||
<td>Modify a Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">emptyCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">emptyGrobCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">emptyGTreeCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.display.list.html">engine.display.list</a></td>
|
||||
<td>Control the Grid Display List</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="explode.html">explode</a></td>
|
||||
<td>Explode a path into its components.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="explode.html">explode.character</a></td>
|
||||
<td>Explode a path into its components.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="explode.html">explode.path</a></td>
|
||||
<td>Explode a path into its components.</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="F">-- F --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillGrob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillGrob.GridPath</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillGrob.grob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillStrokeGrob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillStrokeGrob.GridPath</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">fillStrokeGrob.grob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">forceGrob</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.frame.html">frameGrob</a></td>
|
||||
<td>Create a Frame for Packing Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.function.html">functionGrob</a></td>
|
||||
<td>Draw a curve representing a function</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="G">-- G --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="gEdit.html">gEdit</a></td>
|
||||
<td>Create and Apply Edit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gEdit.html">gEditList</a></td>
|
||||
<td>Create and Apply Edit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gpar.html">get.gpar</a></td>
|
||||
<td>Handling Grid Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.get.html">getGrob</a></td>
|
||||
<td>Get a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="getNames.html">getNames</a></td>
|
||||
<td>List the names of grobs on the display list</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">gList</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.glyph.html">glyphGrob</a></td>
|
||||
<td>Draw Typeset Glyphs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gpar.html">gpar</a></td>
|
||||
<td>Handling Grid Graphical Parameters</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gPath.html">gPath</a></td>
|
||||
<td>Concatenate Grob Names</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="Grid.html">Grid</a></td>
|
||||
<td>Grid Graphics</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.function.html">grid.abline</a></td>
|
||||
<td>Draw a curve representing a function</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.add.html">grid.add</a></td>
|
||||
<td>Add a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.bezier.html">grid.bezier</a></td>
|
||||
<td>Draw a Bezier Curve</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.cap.html">grid.cap</a></td>
|
||||
<td>Capture a raster image</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.circle.html">grid.circle</a></td>
|
||||
<td>Draw a Circle</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.clip.html">grid.clip</a></td>
|
||||
<td>Set the Clipping Region</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.copy.html">grid.copy</a></td>
|
||||
<td>Make a Copy of a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.curve.html">grid.curve</a></td>
|
||||
<td>Draw a Curve Between Locations</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">grid.define</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.delay.html">grid.delay</a></td>
|
||||
<td>Encapsulate calculations and generating a grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.display.list.html">grid.display.list</a></td>
|
||||
<td>Control the Grid Display List</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.DLapply.html">grid.DLapply</a></td>
|
||||
<td>Modify the Grid Display List</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.draw.html">grid.draw</a></td>
|
||||
<td>Draw a grid grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.edit.html">grid.edit</a></td>
|
||||
<td>Edit the Description of a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">grid.fill</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">grid.fillStroke</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.force</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.force.default</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.force.gPath</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.force.grob</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.frame.html">grid.frame</a></td>
|
||||
<td>Create a Frame for Packing Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.function.html">grid.function</a></td>
|
||||
<td>Draw a curve representing a function</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.edit.html">grid.gedit</a></td>
|
||||
<td>Edit the Description of a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.get.html">grid.get</a></td>
|
||||
<td>Get a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.get.html">grid.gget</a></td>
|
||||
<td>Get a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.glyph.html">grid.glyph</a></td>
|
||||
<td>Draw Typeset Glyphs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grab.html">grid.grab</a></td>
|
||||
<td>Grab the current grid output</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grab.html">grid.grabExpr</a></td>
|
||||
<td>Grab the current grid output</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.remove.html">grid.gremove</a></td>
|
||||
<td>Remove a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grep.html">grid.grep</a></td>
|
||||
<td>Search for Grobs and/or Viewports</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grill.html">grid.grill</a></td>
|
||||
<td>Draw a Grill</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">grid.group</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.layout.html">grid.layout</a></td>
|
||||
<td>Create a Grid Layout</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="legendGrob.html">grid.legend</a></td>
|
||||
<td>Constructing a Legend Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.move.to.html">grid.line.to</a></td>
|
||||
<td>Move or Draw to a Specified Position</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.lines.html">grid.lines</a></td>
|
||||
<td>Draw Lines in a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.locator.html">grid.locator</a></td>
|
||||
<td>Capture a Mouse Click</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.ls.html">grid.ls</a></td>
|
||||
<td>List the names of grobs or viewports</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.move.to.html">grid.move.to</a></td>
|
||||
<td>Move or Draw to a Specified Position</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.newpage.html">grid.newpage</a></td>
|
||||
<td>Move to a New Page on a Grid Device</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.null.html">grid.null</a></td>
|
||||
<td>Null Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.pack.html">grid.pack</a></td>
|
||||
<td>Pack an Object within a Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.path.html">grid.path</a></td>
|
||||
<td>Draw a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.place.html">grid.place</a></td>
|
||||
<td>Place an Object within a Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.plot.and.legend.html">grid.plot.and.legend</a></td>
|
||||
<td>A Simple Plot and Legend Demo</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.points.html">grid.points</a></td>
|
||||
<td>Draw Data Symbols</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.polygon.html">grid.polygon</a></td>
|
||||
<td>Draw a Polygon</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.lines.html">grid.polyline</a></td>
|
||||
<td>Draw Lines in a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.pretty.html">grid.pretty</a></td>
|
||||
<td>Generate a Sensible ("Pretty") Set of Breakpoints</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.raster.html">grid.raster</a></td>
|
||||
<td>Render a raster object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.record.html">grid.record</a></td>
|
||||
<td>Encapsulate calculations and drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.rect.html">grid.rect</a></td>
|
||||
<td>Draw rectangles</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.refresh.html">grid.refresh</a></td>
|
||||
<td>Refresh the current grid scene</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.remove.html">grid.remove</a></td>
|
||||
<td>Remove a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.reorder.html">grid.reorder</a></td>
|
||||
<td>Reorder the children of a gTree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.revert</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.revert.gPath</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.force.html">grid.revert.grob</a></td>
|
||||
<td>Force a grob into its components</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.roundrect.html">grid.roundrect</a></td>
|
||||
<td>Draw a rectangle with rounded corners</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.segments.html">grid.segments</a></td>
|
||||
<td>Draw Line Segments</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.set.html">grid.set</a></td>
|
||||
<td>Set a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.show.layout.html">grid.show.layout</a></td>
|
||||
<td>Draw a Diagram of a Grid Layout</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.show.viewport.html">grid.show.viewport</a></td>
|
||||
<td>Draw a Diagram of a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">grid.stroke</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.text.html">grid.text</a></td>
|
||||
<td>Draw Text</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">grid.use</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.xaxis.html">grid.xaxis</a></td>
|
||||
<td>Draw an X-Axis</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.xspline.html">grid.xspline</a></td>
|
||||
<td>Draw an Xspline</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.yaxis.html">grid.yaxis</a></td>
|
||||
<td>Draw a Y-Axis</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">gridCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">gridGrobCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">gridGTreeCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">grob</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobWidth.html">grobAscent</a></td>
|
||||
<td>Create a Unit Describing the Width of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobCoords.html">grobCoords</a></td>
|
||||
<td>Calculate Points on the Perimeter of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobWidth.html">grobDescent</a></td>
|
||||
<td>Create a Unit Describing the Width of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobWidth.html">grobHeight</a></td>
|
||||
<td>Create a Unit Describing the Width of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobName.html">grobName</a></td>
|
||||
<td>Generate a Name for a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.ls.html">grobPathListing</a></td>
|
||||
<td>List the names of grobs or viewports</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobCoords.html">grobPoints</a></td>
|
||||
<td>Calculate Points on the Perimeter of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">grobTree</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobWidth.html">grobWidth</a></td>
|
||||
<td>Create a Unit Describing the Width of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobX.html">grobX</a></td>
|
||||
<td>Create a Unit Describing a Grob Boundary Location</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobX.html">grobY</a></td>
|
||||
<td>Create a Unit Describing a Grob Boundary Location</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">groupFlip</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">groupGrob</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">groupRotate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">groupScale</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">groupShear</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">groupTranslate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">gTree</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="H">-- H --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="widthDetails.html">heightDetails</a></td>
|
||||
<td>Width and Height of a grid grob</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="I">-- I --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.grob.html">is.grob</a></td>
|
||||
<td>Create Grid Graphical Objects, aka "Grob"s</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.html">is.unit</a></td>
|
||||
<td>Function to Create a Unit Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grobCoords.html">isClosed</a></td>
|
||||
<td>Calculate Points on the Perimeter of a Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="gridCoords.html">isEmptyCoords</a></td>
|
||||
<td>Create Sets of Coordinates for Grid Grobs</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="L">-- L --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="legendGrob.html">legendGrob</a></td>
|
||||
<td>Constructing a Legend Grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="patterns.html">linearGradient</a></td>
|
||||
<td>Define Gradient and Pattern Fills</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.lines.html">linesGrob</a></td>
|
||||
<td>Draw Lines in a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.move.to.html">lineToGrob</a></td>
|
||||
<td>Move or Draw to a Specified Position</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="M">-- M --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="makeContent.html">makeContent</a></td>
|
||||
<td>Customised grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="makeContent.html">makeContext</a></td>
|
||||
<td>Customised grid Grobs</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.move.to.html">moveToGrob</a></td>
|
||||
<td>Move or Draw to a Specified Position</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="N">-- N --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.ls.html">nestedListing</a></td>
|
||||
<td>List the names of grobs or viewports</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.null.html">nullGrob</a></td>
|
||||
<td>Null Graphical Object</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="P">-- P --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.pack.html">packGrob</a></td>
|
||||
<td>Pack an Object within a Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.path.html">pathGrob</a></td>
|
||||
<td>Draw a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.ls.html">pathListing</a></td>
|
||||
<td>List the names of grobs or viewports</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="patterns.html">pattern</a></td>
|
||||
<td>Define Gradient and Pattern Fills</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="patterns.html">patterns</a></td>
|
||||
<td>Define Gradient and Pattern Fills</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.place.html">placeGrob</a></td>
|
||||
<td>Place an Object within a Frame</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="plotViewport.html">plotViewport</a></td>
|
||||
<td>Create a Viewport with a Standard Plot Layout</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.points.html">pointsGrob</a></td>
|
||||
<td>Draw Data Symbols</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.polygon.html">polygonGrob</a></td>
|
||||
<td>Draw a Polygon</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.lines.html">polylineGrob</a></td>
|
||||
<td>Draw Lines in a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewports.html">popViewport</a></td>
|
||||
<td>Maintaining and Navigating the Grid Viewport Tree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="drawDetails.html">postDrawDetails</a></td>
|
||||
<td>Customising grid Drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="drawDetails.html">preDrawDetails</a></td>
|
||||
<td>Customising grid Drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewports.html">pushViewport</a></td>
|
||||
<td>Maintaining and Navigating the Grid Viewport Tree</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="R">-- R --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="patterns.html">radialGradient</a></td>
|
||||
<td>Define Gradient and Pattern Fills</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.raster.html">rasterGrob</a></td>
|
||||
<td>Render a raster object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.record.html">recordGrob</a></td>
|
||||
<td>Encapsulate calculations and drawing</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.rect.html">rectGrob</a></td>
|
||||
<td>Draw rectangles</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.remove.html">removeGrob</a></td>
|
||||
<td>Remove a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.reorder.html">reorderGrob</a></td>
|
||||
<td>Reorder the children of a gTree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="valid.just.html">resolveHJust</a></td>
|
||||
<td>Validate a Justification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="resolveRasterSize.html">resolveRasterSize</a></td>
|
||||
<td>Utility function to resolve the size of a raster grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="valid.just.html">resolveVJust</a></td>
|
||||
<td>Validate a Justification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.roundrect.html">roundrect</a></td>
|
||||
<td>Draw a rectangle with rounded corners</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.roundrect.html">roundrectGrob</a></td>
|
||||
<td>Draw a rectangle with rounded corners</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="S">-- S --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="viewports.html">seekViewport</a></td>
|
||||
<td>Maintaining and Navigating the Grid Viewport Tree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.segments.html">segmentsGrob</a></td>
|
||||
<td>Draw Line Segments</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.add.html">setChildren</a></td>
|
||||
<td>Add a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.set.html">setGrob</a></td>
|
||||
<td>Set a Grid Graphical Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="showGrob.html">showGrob</a></td>
|
||||
<td>Label grid grobs.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="showViewport.html">showViewport</a></td>
|
||||
<td>Display grid viewports.</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stringWidth.html">stringAscent</a></td>
|
||||
<td>Create a Unit Describing the Width and Height of a String or Math Expression</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stringWidth.html">stringDescent</a></td>
|
||||
<td>Create a Unit Describing the Width and Height of a String or Math Expression</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stringWidth.html">stringHeight</a></td>
|
||||
<td>Create a Unit Describing the Width and Height of a String or Math Expression</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="stringWidth.html">stringWidth</a></td>
|
||||
<td>Create a Unit Describing the Width and Height of a String or Math Expression</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">strokeGrob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">strokeGrob.GridPath</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.stroke.html">strokeGrob.grob</a></td>
|
||||
<td>Stroke or Fill a Path</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="T">-- T --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.text.html">textGrob</a></td>
|
||||
<td>Draw Text</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="U">-- U --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="unit.html">unit</a></td>
|
||||
<td>Function to Create a Unit Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.c.html">unit.c</a></td>
|
||||
<td>Combine Unit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.length.html">unit.length</a></td>
|
||||
<td>Length of a Unit Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.pmin.html">unit.pmax</a></td>
|
||||
<td>Parallel Unit Minima and Maxima</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.pmin.html">unit.pmin</a></td>
|
||||
<td>Parallel Unit Minima and Maxima</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.pmin.html">unit.psum</a></td>
|
||||
<td>Parallel Unit Minima and Maxima</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unit.rep.html">unit.rep</a></td>
|
||||
<td>Replicate Elements of Unit Objects</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="unitType.html">unitType</a></td>
|
||||
<td>Return the Units of a Unit Object</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewports.html">upViewport</a></td>
|
||||
<td>Maintaining and Navigating the Grid Viewport Tree</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.group.html">useGrob</a></td>
|
||||
<td>Draw a Group</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">useRotate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">useScale</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">useTranslate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="V">-- V --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="valid.just.html">valid.just</a></td>
|
||||
<td>Validate a Justification</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="validDetails.html">validDetails</a></td>
|
||||
<td>Customising grid grob Validation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewport.html">viewport</a></td>
|
||||
<td>Create a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">viewportRotate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">viewportScale</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">viewportTransform</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewportTransform.html">viewportTranslate</a></td>
|
||||
<td>Define a Group Transformation</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewport.html">vpList</a></td>
|
||||
<td>Create a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="vpPath.html">vpPath</a></td>
|
||||
<td>Concatenate Viewport Names</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewport.html">vpStack</a></td>
|
||||
<td>Create a Grid Viewport</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="viewport.html">vpTree</a></td>
|
||||
<td>Create a Grid Viewport</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="W">-- W --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="widthDetails.html">widthDetails</a></td>
|
||||
<td>Width and Height of a grid grob</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="X">-- X --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.xaxis.html">xaxisGrob</a></td>
|
||||
<td>Draw an X-Axis</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xDetails.html">xDetails</a></td>
|
||||
<td>Boundary of a grid grob</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="grid.xspline.html">xsplineGrob</a></td>
|
||||
<td>Draw an Xspline</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xsplinePoints.html">xsplinePoints</a></td>
|
||||
<td>Return the points that would be used to draw an Xspline (or a Bezier curve).</td></tr>
|
||||
</table>
|
||||
|
||||
<h2><a id="Y">-- Y --</a></h2>
|
||||
|
||||
<table style="width: 100%;">
|
||||
<tr><td style="width: 25%;"><a href="grid.yaxis.html">yaxisGrob</a></td>
|
||||
<td>Draw a Y-Axis</td></tr>
|
||||
<tr><td style="width: 25%;"><a href="xDetails.html">yDetails</a></td>
|
||||
<td>Boundary of a grid grob</td></tr>
|
||||
</table>
|
||||
</div></body></html>
|
||||
@media screen {
|
||||
.container {
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
max-width: 900px;
|
||||
}
|
||||
}
|
||||
|
||||
.rimage img { /* from knitr - for examples and demos */
|
||||
width: 96%;
|
||||
margin-left: 2%;
|
||||
}
|
||||
|
||||
.katex { font-size: 1.1em; }
|
||||
|
||||
code {
|
||||
color: inherit;
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.4;
|
||||
background: white;
|
||||
color: black;
|
||||
}
|
||||
|
||||
a:link {
|
||||
background: white;
|
||||
color: blue;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
background: white;
|
||||
color: rgb(50%, 0%, 50%);
|
||||
}
|
||||
|
||||
h1 {
|
||||
background: white;
|
||||
color: rgb(55%, 55%, 55%);
|
||||
font-family: monospace;
|
||||
font-size: 1.4em; /* x-large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h2 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h4 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
font-size: 1.2em; /* large; */
|
||||
}
|
||||
|
||||
h5 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
h6 {
|
||||
background: white;
|
||||
color: rgb(40%, 40%, 40%);
|
||||
font-family: monospace;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
img.toplogo {
|
||||
width: 4em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
img.arrow {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
span.acronym {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
span.env {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.file {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.option{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
span.pkg {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
span.samp{
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
div.vignettes a:hover {
|
||||
background: rgb(85%, 85%, 85%);
|
||||
}
|
||||
|
||||
tr {
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
span.rlang {
|
||||
font-family: Courier New, Courier;
|
||||
color: #666666;
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"files":[{"filename":"/00Index.html","start":0,"end":32796},{"filename":"/R.css","start":32796,"end":34640}],"remote_package_size":34640}
|
File diff suppressed because it is too large
Load diff
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue