Changes in version 2026-06-10 - Added arguments add and offset to ciplot() so that multiple sets of confidence intervals may be compared. (Issue #19) - mypairs() now calls grayplot() for the individual plots. Actually, if show_na=TRUE it uses grayplot_na() so that missing values are shown, and this is now the default. - Began work on a vignette about the package Changes in version 2026-06-08 - Added argument notexact to crayons(). If TRUE, return all partial matches to any of the provided strings, ignoring cases. - plot_crayons() now takes a colors argument; give it a list of crayon colors and it will show just that subset. - Add package logo. Changes in version 2025-12-08 - Removed includes of R_ext/PrtUtil.h which began causing warnings on CRAN. Changes in version 2025-10-09 - Fixed a bug in crayons(), which failed to find perfect name matches. Changes in version 2025-09-03 - Fixed a bug in jiggle() for the case of a factor where some levels are missing. This showed up as a problem with dotplot(), which calls jiggle(). Fixes Issue #16. Changes in version 2025-06-08 - Added runningratio2() which is like runningratio() but instead of a fixed-width window, it uses an adaptive window to hit some target denominator. Changes in version 2024-05-18 - Allow NAs in runningmean() and runningratio(). - Add scale argument to time_axis() to allow control over time labels it gives, and format argument for customized labels. - Add function timeplot(), which is like grayplot() but with x-axis being date/times. Changes in version 2024-05-05 - Small change to documentation for objectsizes() (Mb -> MB) - Added function time_axis() for helping set up axis labels for date/times. Changes in version 2022-07-08 - Include in a C file, for upcoming change to R. Changes in version 2021-10-11 - Removed all pushbullet functions. They stopped supporting iOS which makes it useless for me. - Added warning to dec2hex() and add to documentation for that and hex2dec(), about maximum allowable values (2^31 - 1). - Revised bromanversion() to handle a case like "0.74". Changes in version 2021-02-04 - Changed default max_jiggle in dotplot() to 0.45 (rather than NULL). Similarly changed default for maxvalue in jiggle() to 0.45. - Fixed typo in help file for excel_fig(). Changes in version 2020-11-18 - Changed the default "jiggle" method in jiggle() and dotplot() to be "random", as it seems to work better than the deterministic approach ("fixed"). - Fixed problem in ciplot() to avoid warnings about some graphics parameters. - grayplot() now can take mgp graphics argument. - Added argument maxvalue to jiggle(), and max_jiggle to dotplot(), to better control the horizontal jiggling of points when there is a lot of data. (Fixes Issue #8) - Make it so you can adjust the vertical lines in dotplot() by including vlines.lwd and/or vlines.col. (Fixes Issue #7) - Make it so you can use v_over_h in dotplot() - Fixed potential problem in documentation, since plot() has moved from the graphics package to base. Changes in version 2020-05-21 - Added an option to include grid lines in triplot(), and a separate function trigrid() that does the work and may be called separately. - Added twocolorpal() for a color palette that goes from one color (say blue) to another (say red) through a third (say white). That is, blue to white to red. - In vec2string(), add conjunction argument, to allow a different combining word than "and". - In ciplot(), allow argument main in ... to be passed to grayplot() and so on to plot(). Changes in version 2019-04-11 - Added function ciplot() for plotting a set of confidence intervals. - Added operators %nin%, %win%, and %wnin%. - a %nin% b is like !(a %in% b) - a %win% b is like a[a %in% b] - a %wnin% b is like a[a %nin% b] - Added function spell_out() for spelling out numbers provided they are smallish integers. Goes with the datasets numbers and Numbers. - Added function revgray() that's like revrainbow() but white/black. - In dotplot(), make "Group" the default axis label whether rotated or not. (Was when rotate=TRUE, but not when rotate=FALSE.) - Use Markdown throughout documentation Changes in version 2018-07-25 - Added function tritext(), to go with triplot(), tripoints(), trilines(), and triarrows(), but to add text annotations. - Revised openfile() so that it works on Linux. Changes in version 2017-12-08 - Added function grayplot_na(). It's like grayplot, but includes boxes near the margins to show points that are missing x or y or both. - Added function vec2string() for turning a vector into a string with the items separated by commas and an "and". This is for use in R Markdown documents, to list a series of items. - Added function get_precision() for determining the precision of a number (the number of digits past the decimal point). I want to use this to compare two data sets with different amounts of rounding, to pick the more precise values. - Added function align_vectors() for aligning two vectors using their names attributes. - In grayplot(), have default be pch=21 and bg="lightblue" (that is, points that are lightblue with a black circle around them). Changes in version 2017-10-24 - Add bgcolor argument to triplot(), to have the background of the rectangle be gray, by default. - Also change default background in grayplot() and theme_karl() from "gray80" to "gray90" (which is much less dark of a gray). - Fix bug in dotplot() in case that y has missing values (omit them). Changes in version 2017-05-07 - In note() for RPushbullet, force 'body' to be non-empty, because we get an error otherwise. In done(), use body=NULL to avoid similar errors. Changes in version 2017-05-04 - Added the function crayons() which is shorthand for brocolors("crayons"), but also can take a subset of color names, and uses grep to find partial matches. So you can use crayons("purple mountain") rather than brocolors("crayons")["Purple Mountain's Majesty"] Changes in version 2017-02-21 - Fix problem with pushbullet_devices(); output of RPushbullet::pbGetDevices()$devices is now a data frame; code assumes it's a list. Changes in version 2016-11-30 - Add 'mar' argument to excel_fig. (plot margins; passed to par()) Changes in version 2015-11-21 - Add function maxabs() which just does max(abs(x)). Changes in version 2015-11-15 - Add function dotplot() which is a simplified version of grayplot() for categorical x. - Add function jiggle() for horizontal jiggling, either "fixed" (deterministic, similar to the beeswarm package) or "random"; used in dotplot() - In grayplot(), have vlines and hlines follow from xlim and ylim, respectively, if they're provided. Changes in version 2015-09-24 - Add function fac2num() for converting a factor to numeric. Changes in version 2015-08-04 - Add function excel_fig() for making a figure that shows the contents of a matrix, as it might appear in Excel. - Add function pushbullet_devices() for getting list of active pushbullet devices. Changes in version 2015-07-16 - Add function compare_rows(), for comparing rows in a numeric matrix, either by proportion mismatches or RMS difference. - Add function add_commas(), for adding commas in large numbers, like 91310 -> "91,310" Changes in version 2015-07-06 - Add function stop_sending_errors(), the reverse of errors2pushbullet(). Changes in version 2015-06-25 - Allow use of col.lab in grayplot(), for coloring the axis titles. Changes in version 2015-06-20 - Add "web" colors option (from https://clrs.cc) and an alternative set of Collaborative Cross colors to brocolors() - Add checks for ^C (user interrupt) in compare_rows(). - Add data numbers and Numbers (numbers 1-20 spelled out in English; numbers in lower-case and Numbers capitalized) Changes in version 2015-06-18 - Add function switchv(), a vectorized version of switch(). Changes in version 2015-06-04 - Add function openfile() for opening a file using system(). Changes in version 2015-04-27 - In theme_karl(), add black rectangle around the facet rectangles, too. Changes in version 2015-04-22 - Add function theme_karl() (aka karl_theme()), with a ggplot2 theme that removes the tick boxes and adds a black border. Changes in version 2015-03-05 - Delete functions get0() and get.() since there's going to be a get0 function in base R 3.2.0. Changes in version 2015-02-12 - Add note() function, which is just a wrapper for RPushbullet::pbPost. - Revised make() to work with any directory (not just an R package). Also added a "target" argument. Changes in version 2015-02-09 - Add exit() function, which is just the same as q("no"). Changes in version 2015-01-05 - Remove attachfile() and loadfile() as I don't use them and they cause CRAN headaches. Changes in version 2014-12-01 - Revise errors2pushbullet(), argument deviceind replaced by recipients. Changes in version 2014-11-03 - Added argument v_over_h to grayplot(), controlling whether horizontal gridlines are on top of the vertical ones or vice versa. - Revisions to grayplot for better treatment of case of missing y. To avoid gridlines, use vlines=NA and/or hlines=NA. Changes in version 2014-10-24 - Added function attrnames() which is just names(attributes(object)) Changes in version 2014-09-03 - Add function errors2pushbullet() which sets options(error) to use the RPushbullet package to send a push notification. Changes in version 2014-07-16 - Add crayon colors to brocolors(), and plot_crayons function to view them. Change bg and bgpng for near-black background. - Add colwalpha function. - grayplot: change defaults for xat, yat, vlines, hlines Changes in version 2014-03-30 - Added a simple utility function kbdate() for getting the date in a different format. - Added some unit tests using testthat. Changes in version 2014-03-13 - Add function make() for running make within a package directory, for use with devtools(). Changes in version 2014-03-09 - Add function brocolors() returning vectors of colors I use in figures. - Convert package to use roxygen2 for documentation. Changes in version 2013-10-29 - Revise tripoints() and related functions to invisibly return the (x,y) coordinates of the points, as plotted. Changes in version 2013-08-02 - Added qqline2(), which is like qqline() but for two datasets. Changes in version 2013-06-08 - Revise grayplot for better treatment of x- and y-axis titles, including the use of mgp/mgp.x/mgp.y. Changes in version 2013-05-13 - Added function histlines for making a histogram with lines(). Changes in version 2013-05-03 - Added function xlimlabel for determining appropriate xlim to add character string labels to a plot - Added functions strwidth2xlim and strwidth2lines for calculating margin lengths or x-axis limits that will fit a given set of text. Changes in version 2012-10-17 - In Description file, added "Depends: R (>= 2.15.0)", since get0 uses paste0. I could use paste(..., sep=""), but... Changes in version 2012-10-04 - Changed order of plotting of vertical and horizontal lines in grayplot(). Also added ability to control the margin parameters (spacing of axis labels and such). Changes in version 2012-07-19 - Improved convert2hex so it handles numbers > 255; added alias dec2hex. Added related function hex2dec. Changes in version 2012-05-14 - Added function cf() for comparing vectors/matrices/lists, including proper handling of NAs - Added functions get0() and get.() which combine get and paste. - Added grayplot() for plots with gray backgrounds. - Added manyboxplot() for making boxplot-like figures with many groups - Added paste.() function, which is just paste(..., sep=".") - Added function revrainbow(), which is just rev(rainbow(start=0, end=2/3, ...)) - Added paste00(), paste..(), paste0.() and paste.0() Changes in version 2012-04-11 - runningmean() can now also calculate a running SD. - Revised bromanversion() to use packageVersion(). - Simplified myround(), using sprintf(). Changes in version 2011-11-07 - Added NAMESPACE (for R 2.14.0) Changes in version 2011-04-23 - Revised normalize() to handle NAs. - Added function winsorize() for winsorizing a numeric vector. - Added function bromanversion() to print installed version number. Changes in version 2010-12-14 - Added function objectsizes(), for calculating the sizes of the objects in one's workspace. Changes in version 2010-11-22 - Added functions triplot(), tripoints(), trilines(), triarrow() for plotting ternary plot (an equilateral triangle used to depict trinomial distributions). - Added function venn() for drawing a to-scale Venn diagram. - Added function arrowlocator() for using locator() to indicate the endpoints of an arrow and then draw it. Changes in version 2010-11-17 - Fixed a bug in permtest (the pval argument didn't work). Changes in version 2010-08-06 - Deleted the nqrank() function, as I've now placed it within R/qtl. Changes in version 2010-03-25 - Slight change to nqrank, so that -Inf values are replaced by 10 less than the minimum of any finite values (rather than 10 more than that minimum). Changes in version 2009-11-06 - Revised runningmean and runningratio so that the statistics can be calculated at arbitrary locations. Also revised them so that the input do not need to have sorted positions. Changes in version 2009-10-26 - Slight change to nqrank, to preserve the mean and SD. - Fixed a few links in the help files. - Revised h() to conform to a change in R. Changes in version 2009-08-11 - Slight change to nqrank, so that ties are not jittered by default, but may be (if one uses the argument jitter=TRUE). Changes in version 2009-04-28 - Updated license to GPL-3 Changes in version 2008-11-20 - Revised perm.test and paired.perm.test so that they can return the actual permutation results (rather than just the p-value), though the default is still to just return the p-value. - Fixed a bug in myround(). Changes in version 2008-09-19 - Revised attachfile and attachwork so that they return (invisibly) TRUE/FALSE according to whether the file was found. - Also added an argument 'verbose'; if TRUE and the file can't be loaded, a warning is given. Changes in version 2008-02-29 - Added a function normalize() for doing quantile normalization. Changes in version 2007-10-09 - Added a function runningratio, for calculating sum(numerator)/sum(denominator) in sliding window. - Fixed some errors in the help files. Changes in version 2007-09-20 - Fixed a bug in loadwork(). Changes in version 2007-01-18 - Modified fisher() so that the p-value is Prop'n >= rather than just >. - Added a similar function, chisq() for doing a chi-square test with p-value calculated by simulation. In 0.20-2, suppressed warnings produced by chisq.test. Changes in version 2006-12-19 - Added a function runningmean(). - Fixed a bug in paired.perm.test(). Changes in version 2006-08-14 - Added a function myround(). Changes in version 2006-06-28 - Added a function mypairs(), similar to pairs() but producing only the upper triangle. - Added a convert2hex() function. Changes in version 2006-01-16 - Added a function h() for getting access to html help files while running R via ESS within emacs. Changes in version 2004-12-08 - Added attachfile() and loadfile(), similar to loadwork() and attachwork(). Changes in version 2004-08-06 - Added little utility functions loadwork() and attachwork() for loading or attaching .RData files of the form "dir*/.RData", when * is an integer, and especially when dir = "Work". Changes in version 2002-04-29 - Added perm.test and paired.perm.test for getting p-values for a two-sample t-statistic by permutation. - There was an obvious bug in the function fisher(), which is now fixed. Changes in version 2001-11-21 - This is a package to contain miscellaneous R functions that I find useful. - Currently, it contains functions to get SEs of sample quantiles, a sampling version of fisher.test, a re-parse of the output of qr(), simulation from a multivariate normal distribution, and numerical integration by Simpson's rule.