Re: [Rd] NAs and rle

2020-08-26 Thread William Dunlap via R-devel
Splus's rle() also grouped NA's (separately from NaN's): % Splus TIBCO Software Inc. Confidential Information Copyright (c) 1988-2008 TIBCO Software Inc. ALL RIGHTS RESERVED. TIBCO Spotfire S+ Version 8.1.1 for Linux 2.6.9-34.EL, 32-bit : 2008 > dput(rle(c(11,11,NA,NA,NA,NaN,14,14,14,14)))

Re: [Rd] lm() takes weights from formula environment

2020-08-10 Thread William Dunlap via R-devel
I assume you are concerned about this because the formula is defined in one environment and the model fitting with weights occurs in a separate function. If that is the case then the model fitting function can create a new environment, a child of the formula's environment, add the weights

[Rd] CAR0 vs. EXTPTR_PTR

2020-07-22 Thread William Dunlap via R-devel
I know that binary packages are R-version specific, but it was a bit surprising that Rcpp 1.0.5 built with R-4.0.2 cannot be loaded into R-4.0.0. % R-4.0.0 --quiet > library(Rcpp, lib="lib-4.0.2") Error: package or namespace load failed for ‘Rcpp’ in dyn.load(file, DLLpath = DLLpath, ...):

[Rd] Change in lapply's missing argument passing

2020-06-26 Thread William Dunlap via R-devel
Consider the following expression, in which we pass 'i=', with no value given for the 'i' argument, to lapply. lapply("x", function(i, j) c(i=missing(i),j=missing(j), i=) >From R-2.14.0 (2011-10-31) through R-3.4.4 (2018-03-15) this evaluated to c(i=TRUE, j=FALSE). From R-3.5.0 (2018-04-23)

[Rd] mget(missingArgument)?

2020-06-22 Thread William Dunlap via R-devel
Currently, when mget() is used to get the value of a function's argument with no default value and no value in the call it returns the empty name (R_MissingArg). Is that the right thing to do or should it return 'ifnotfound' or give an error? E.g., > a <- (function(x) { y <- "y from function's

[Rd] R-devel's ...names() questions

2020-05-22 Thread William Dunlap via R-devel
Am am missing something or does the new ...names() in R-devel not work right? > a <- function(x, ...) ...names() > a(a=stop("a"), b=stop("b")) [1] "a" "" > a(stop("x"), stop("unnamed"), c=stop("c"), d=stop("d")) [1] NA "" "" > version _ platform x86_64-pc-linux-gnu arch

Re: [Rd] paste(character(0), collapse="", recycle0=FALSE) should be ""

2020-05-22 Thread William Dunlap via R-devel
0, though, it will return "" via the > progression > > > > paste(c("a", "b"), NULL, c("c", "d"), sep = " ", collapse = ",", > > recycle0=TRUE) > > > > -> collapse(character(0), co

Re: [Rd] paste(character(0), collapse="", recycle0=FALSE) should be ""

2020-05-21 Thread William Dunlap via R-devel
yes, I read basically two proposals, both agreeing > that recycle0 = TRUE should only ever apply to the action of 'sep' > but not the action of 'collapse'. > > 1) Bill and Hervé (I think) propose that 'recycle0' should have >no effect whenever 'collapse = ' > > 2) Gabe pr

Re: [Rd] order function called on a data.frame?

2020-05-18 Thread William Dunlap via R-devel
do.call(order, df). -> do.call(order, unname(df)). While you are looking at order(), it would be nice if ';decreasing' could be a vector the the length of list(...) so you could ask to sort some columns in increasing order and some decreasing. I thought I put this on bugzilla eons ago, but

Re: [Rd] paste(character(0), collapse="", recycle0=FALSE) should be ""

2020-05-15 Thread William Dunlap via R-devel
I agree: paste(collapse="something", ...) should always return a single character string, regardless of the value of recycle0. This would be similar to when there are no non-NULL arguments to paste; collapse="." gives a single empty string and collapse=NULL gives a zero long character vector. >

[Rd] edit() doubles backslashes when keep.source=TRUE

2020-05-14 Thread William Dunlap via R-devel
Is it just my installation or does edit() (or fix(), etc.) in R-4.0.0 double all the backslashes when options(keep.source=TRUE)? E.g., > options(keep.source=TRUE) > f <- function(x) { cat("\t", x, "\n", sep="") } > edit(f) # exit the editor without making any changes The editor (vi or notepad)

Re: [Rd] suggestion: "." in [lsv]apply()

2020-04-16 Thread William Dunlap via R-devel
Passing in a function passes not only an argument list but also an environment from which to get free variables. Since your function doesn't pay attention to the environment you get things like the following. > wsapply(list(1,2:3), paste(., ":", deparse(s))) [[1]] [1] "1 : paste(., \":\",

Re: [Rd] detect ->

2020-04-15 Thread William Dunlap via R-devel
You are right. >= is not as evocative as =>. Perhaps > and < would do? %=>% and %<=% would work. Bill Dunlap TIBCO Software wdunlap tibco.com On Wed, Apr 15, 2020 at 12:41 AM Adrian Dușa wrote: > Dear Bill, > > I already tried this, and it would have been great as (currently) the >

Re: [Rd] detect ->

2020-04-13 Thread William Dunlap via R-devel
Using => and <= instead of -> and <- would make things easier, although the precedence would be different. Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Apr 13, 2020 at 1:43 AM Adrian Dușa wrote: > Thank you for your replies, this actually has little to do with the > regular R code but

Re: [Rd] is.vector could handle AsIs class better

2020-03-30 Thread William Dunlap via R-devel
The use of the term 'vector' in R comes from S, where it was used, starting in the latter part of the 1970s, to refer to the most primitive (irreducible) parts of an object. It has little to do with the mathematical or physical concept of a vector and, in my opinion, should not be used much by

Re: [Rd] Inconsistant result for normalizePath on Windows

2020-03-23 Thread William Dunlap via R-devel
Re the trailing path separator - should file.path() be changed to not produce doubled path separators when an argument has a trailing path separator? Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Mar 23, 2020 at 9:24 AM Tomas Kalibera wrote: > > Hi Jiefei, > > the change in handling

Re: [Rd] support of `substitute(...())`

2020-03-12 Thread William Dunlap via R-devel
Note that substitute(...()) and substitute(someFunc(...))[-1] give slightly different results, the former a pairlist and the latter a call. > str((function(...)substitute(...()))(stop(1),stop(2),stop(3))) Dotted pair list of 3 $ : language stop(1) $ : language stop(2) $ : language

Re: [Rd] Change 77844 breaking pkgs [Re: dimnames incoherence?]

2020-02-22 Thread William Dunlap via R-devel
> but then, it seems people want to perpetuate the > claim of R to be slow More charitably, I think that the thinking may have been that since x[[i]] gives you one element of x, they should use x[[i]]<-value, for scalar i, to stick in one element. Bill Dunlap TIBCO Software wdunlap tibco.com

Re: [Rd] dimnames incoherence?

2020-02-21 Thread William Dunlap via R-devel
If we change the behavior NULL--[[--assignment from `[[<-`(NULL, 1, "a" ) # gives "a" (*not* a list) to `[[<-`(NULL, 1, "a" ) # gives list("a") then we have more consistency there *and* your bug is fixed too. Of course, in other situations back-compatibility would be

Re: [Rd] dimnames incoherence?

2020-02-19 Thread William Dunlap via R-devel
How far would you like to go with the automatic creation of dimnames in nested replacement operations on arrays? It currently works nicely with [<- > a <- array(numeric(), dim=c(2,0,1)); dimnames(a)[3] <- list("One") > str(a) num[1:2, 0 , 1] - attr(*, "dimnames")=List of 3 ..$

Re: [Rd] tempdir() containing spaces breaks installing source packages

2019-12-13 Thread William Dunlap via R-devel
You might expand the scope of this a bit to include Windows usernames with non-ASCII characters in them. If I recall correctly, if you are logged under a Cyrillic UTF-8 name then R will not even start. We have seen this in the wild. Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Dec 13,

Re: [Rd] Error in close.connection(p) : ignoring SIGPIPE signal

2019-12-06 Thread William Dunlap via R-devel
You may be running out of file descriptors because the pipe objects are not getting garbage collected often enough. Adding the line if (cnt %% 100 == 0) { cat(cnt, "\n"); gc() } to your loop lets it continue indefinitely. Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Dec 6, 2019 at

Re: [Rd] class() |--> c("matrix", "arrary") [was "head.matrix ..."]

2019-11-15 Thread William Dunlap via R-devel
arrays and matrices have a numeric dims attribute, vectors don't. If statements lead to bad code. Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Nov 15, 2019 at 1:19 PM Abby Spurdle wrote: > > > And indeed I think you are right on spot and this would mean > > > that indeed the implicit

Re: [Rd] calls with comment attribute

2019-11-12 Thread William Dunlap via R-devel
2019 5:01 p.m., William Dunlap via R-devel wrote: > > In general R doesn't print the "comment" attribute of an object > > > structure(1:3, comment=c("a comment", "another comment")) > > [1] 1 2 3 > > but if the object is a cal

[Rd] calls with comment attribute

2019-11-12 Thread William Dunlap via R-devel
In general R doesn't print the "comment" attribute of an object > structure(1:3, comment=c("a comment", "another comment")) [1] 1 2 3 but if the object is a call it prints it in an unusual format > structure(quote(func(arg)), comment=c("a comment", "another comment")) a comment

Re: [Rd] improving the performance of install.packages

2019-11-08 Thread William Dunlap via R-devel
Suppose update.packages("pkg") installed "pkg" if it were not already installed, in addition to its current behavior of installing "pkg" if "pkg" is installed but a newer version is available. The OP could then use update.packages() all the time instead of install.packages() the first time and

Re: [Rd] improving the performance of install.packages

2019-11-08 Thread William Dunlap via R-devel
While developing a package, I often run install.packages() on it many times in a session without updating its version number. How would your proposed change affect this workflow? Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Nov 8, 2019 at 11:56 AM Joshua Bradley wrote: > I could do

Re: [Rd] Puzzled about a new method for "[".

2019-11-04 Thread William Dunlap via R-devel
> the perils certainly are not immediately apparent to me. Here is a concrete example of a peril `[.myclass` <- function(x, i, j, drop = if (missing(i)) TRUE else length(cols) == 1) { SaveAt <- lapply(x, attributes) x <- NextMethod() lX <- lapply(names(x),function(nm, x,

[Rd] Should slot<-() alter its first argument?

2019-09-19 Thread William Dunlap via R-devel
We noticed that the slot<- function alters its first argument, which goes against the grain of a functional language. The similar @<- does not change its first argument. Is this intended? The timeSeries and distr package depend on this altering. > setClass("Z",

Re: [Rd] Error: package or namespace load failed for ‘utils

2019-09-08 Thread William Dunlap via R-devel
Also, check the settings of R_HOME and/or R_LIBS. Bill Dunlap TIBCO Software wdunlap tibco.com On Sun, Sep 8, 2019 at 9:58 AM William Dunlap wrote: > Look at section 6.1 of the R Installation and Admin manual. > > 6.1 Default packages > > The set of packages loaded on startup is by default > >

Re: [Rd] Error: package or namespace load failed for ‘utils

2019-09-08 Thread William Dunlap via R-devel
Look at section 6.1 of the R Installation and Admin manual. 6.1 Default packages The set of packages loaded on startup is by default > getOption("defaultPackages") [1] "datasets" "utils" "grDevices" "graphics" "stats" "methods" (plus, of course, *base*) and this can be changed by

Re: [Rd] inconsistent handling of factor, character, and logical predictors in lm()

2019-08-31 Thread William Dunlap via R-devel
> Functions like lm() treat logical predictors as factors, *not* as numerical variables. Not quite. A factor with all elements the same causes lm() to give an error while a logical of all TRUEs or all FALSEs just omits it from the model (it gets a coefficient of NA). This is a fairly common

[Rd] New lazyload rdx key type: list(eagerKey=, lazyKeys=)

2019-08-30 Thread William Dunlap via R-devel
Prior to R-3.6.0 the keys in the lazyload key files, e.g. pkg/data/Rdata.rdx or pkg/R/pkg.rdx, seemed to all be 2-long integer vectors. Now they can be lists. The ones I have seen have two components, "eagerKey" is a 2-long integer vector and "lazyKeys" is a named list of 2-long integer vectors.

Re: [Rd] ?Syntax wrong about `?`'s precedence ?

2019-08-30 Thread William Dunlap via R-devel
Precedence is a property of the parser and has nothing to do with the semantics assigned to various symbols. Using just core R functions you can see the precedence of '?' is between those of '=' and '<-'. > # '=' has lower precedence than '?' > str(as.list(parse(text="a ? b = c")[[1]])) List of

Re: [Rd] Feature request: non-dropping regmatches/strextract

2019-08-15 Thread William Dunlap via R-devel
Using a non-capturing group, "(?:...)" instead of "(...)", simplifies my example a bit > x <- c("Groucho ", "", "Harpo") > strcapture("([[:alpha:]]+)?(?: *<([[:alpha:]. ]+@[[:alpha:]. ]+)>)?", x, proto=data.frame(Name=character(), Address=character(), stringsAsFactors=FALSE)) Name

Re: [Rd] Feature request: non-dropping regmatches/strextract

2019-08-15 Thread William Dunlap via R-devel
I don't care much for regmatches and haven't tried strextract, but I think replacing the character(0) by NA_character_ is almost always inappropriate if the match information comes from gregexpr. I think strcapture() does a pretty good job of what I think you are trying to do. Perhaps adding an

[Rd] Rf_defineVar(symbol, R_UnboundValue, environment) questions

2019-08-15 Thread William Dunlap via R-devel
While poking around the C++ code in the dplyr package I ran across the idiom Rf_defineVar(symbol, R_UnboundValue, environment) to [sort of] remove 'symbol' from 'environment' Using it makes the R-level functions objects(), exists(), and get() somewhat inconsistent and I was wondering if that

Re: [Rd] Feature request: non-dropping regmatches/strextract

2019-08-15 Thread William Dunlap via R-devel
Changing the default behavior of regmatches would break its use with gregexpr, where the number of matches per input element faries, so a zero-length character vector makes more sense than NA_character_. > x <- c("John Doe", "e e cummings", "Juan de la Madrid") > m <- gregexpr("[A-Z]", x) >

Re: [Rd] Infrequent but steady NULL-pointer caused segfault in as.POSIXlt.POSIXct (R 3.4.4)

2019-08-02 Thread William Dunlap via R-devel
If you can run things on LInux try running a few iterations of that loop under valgrind, setting gctorture(TRUE) before the loop. % R --debugger=valgrind --silent > gctorture(TRUE) > for(i in 1:5) { ... body of your loop ... } valgrind can show memory misuse that eventually will cause R to

Re: [Rd] Potential bug with data.frame replacement

2019-07-15 Thread William Dunlap via R-devel
This may be related to the size of the deparsed call in the error message that Brodie and Luke were discussing recently on R-devel (" Mitigating Stalls Caused by Call Deparse on Error"). I don't get a crash, but the error message itself doesn't show up after the deparsed call. > X <-

Re: [Rd] Calculation of e^{z^2/2} for a normal deviate z

2019-06-23 Thread William Dunlap via R-devel
include/Rmath.h declares a set of 'logspace' functions for use at the C level. I don't think there are core R functions that call them. /* Compute the log of a sum or difference from logs of terms, i.e., * * log (exp (logx) + exp (logy)) * or log (exp (logx) - exp (logy)) * * without

Re: [Rd] [R] Open a file which name contains a tilde

2019-06-11 Thread William Dunlap via R-devel
Note that R treats tildes in file names differently on Windows and Linux. On Windows, it is only replaced if it it at the beginning of the line and is followed by a forward or backward slash or end-of-line. On Linux it is replaced no matter where it is in the text and ~someUser will be replaced

Re: [Rd] print.() not called when autoprinting

2019-05-21 Thread William Dunlap via R-devel
lobal environment with print methods. Maybe > it'd make sense to add getOption("autoprint") which should be set to > a user- or environment- supplied function. That function would do the > dispatch. I'd be happy to send a patch for this, if it makes sense. > > Best, > Li

Re: [Rd] print.() not called when autoprinting

2019-05-21 Thread William Dunlap via R-devel
; print.complex <- function(x, ...) "complex vector" 3.6.0> 1+2i [1] 1+2i 3.6.0> print(1+2i) [1] "complex vector" Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, May 21, 2019 at 9:31 AM Martin Maechler wrote: > >>>>> William Dunlap via R-deve

Re: [Rd] WISH: Built-in R session-specific universally unique identifier (UUID)

2019-05-20 Thread William Dunlap via R-devel
I think a machine-specific input, like the MAC address, to the UUID is essential. S+ used to make a seed for the random number generator based on the the current time and process ID. A customer complained that all machines in his cluster generated the same random number stream. The machines

[Rd] print.() not called when autoprinting

2019-05-16 Thread William Dunlap via R-devel
In R-3.6.0 autoprinting was changed so that print methods for the storage modes are not called when there is no explicit class attribute. E.g., % R-3.6.0 --vanilla --quiet > print.function <- function(x, ...) { cat("Function with argument list "); cat(sep="\n", head(deparse(args(x)), -1));

Re: [Rd] [r-devel] integrate over an infinite region produces wrong results depending on scaling

2019-04-14 Thread William Dunlap via R-devel
integrate(f, xmin, xmax) will have problems when f(x) is 0 over large parts of (xmin,xmax). It doesn't have any clues to where the non-zero regions are. It computes f(x) at 21 points at each step and if all of those are zero (or some other constant?) for a few steps, it calls it a day. If you

Re: [Rd] Discrepancy between is.list() and is(x, "list")

2019-03-26 Thread William Dunlap via R-devel
I think this goes back to SV4 (c. late 1990's). The is. functions are much older (c. mid 1970's) , from before any class system was in S. is() and inherits() were introduced with the S4 class system and were meant to escape from the prison made by ancient design choices. Bill Dunlap TIBCO

[Rd] POSIXlt$zone and $gmtoff questions

2019-03-08 Thread William Dunlap via R-devel
I've been searching for patterns in why some POSIXlt objects have the zone and gmtoff components and some don't and why gmtoff is sometimes NA when the zone is known. Is there a pattern or is it just that the additional fields and workarounds were added in an ad hoc way? E.g., as.POSIXlt adds

Re: [Rd] as.Date(Inf) displays as 'NA' but is actually 'Inf'

2019-03-05 Thread William Dunlap via R-devel
format.Date runs into trouble long before Inf: > as.Date("2018-03-05") + c(2147466052, 2147466053) [1] "5881580-07-11" "-5877641-06-23" Bill Dunlap TIBCO Software wdunlap tibco.com On Tue, Mar 5, 2019 at 2:33 PM Gabriel Becker wrote: > Richard, > > Well others may chime in here, but from

Re: [Rd] Intermittent crashes with inset `[<-` command

2019-02-27 Thread William Dunlap via R-devel
Valgrind (without gctorture) reports memory misuse: % R --debugger=valgrind --debugger-args="--leak-check=full --num-callers=18" ... > x <- 1:20 > y <- rep(letters[1:5], length(x) / 5L) > for (i in 1:1000) { + # x[y == 'a'] <- x[y == 'b'] + x <- `[<-`(x, y == 'a', x[y == 'b']) + cat(i,

Re: [Rd] code for sum function

2019-02-20 Thread William Dunlap via R-devel
Someone said it used a possibly platform-dependent higher-than-double-precision type. By the way, in my example involving rep(1/3, n) I neglected to include the most precise way to calculate the sum: n%/%3 + (n%%3)/3. Bill Dunlap TIBCO Software wdunlap tibco.com On Wed, Feb 20, 2019 at 2:45 PM

Re: [Rd] code for sum function

2019-02-19 Thread William Dunlap via R-devel
The algorithm does make a differece. You can use Kahan's summation algorithm (https://en.wikipedia.org/wiki/Kahan_summation_algorithm) to reduce the error compared to the naive summation algorithm. E.g., in R code: naiveSum <- function(x) { s <- 0.0 for(xi in x) s <- s + xi s }

Re: [Rd] nlminb with constraints failing on some platforms

2019-02-02 Thread William Dunlap via R-devel
Microsoft R Open 3.4.2 The enhanced R distribution from Microsoft Microsoft packages Copyright (C) 2017 Microsoft Corporation Using the Intel MKL for parallel mathematical computing (using 12 cores). Default CRAN mirror snapshot taken on 2017-10-15. See: https://mran.microsoft.com/. > f <-

Re: [Rd] Runnable R packages

2019-02-01 Thread William Dunlap via R-devel
To download a package with all its dependencies and install it, use the install.packages() functions instead of 'R CMD INSTALL'. E.g., in bash: mkdir /tmp/libJunk env R_LIBS_SITE=libJunk R --quiet -e 'if (!requireNamespace("purrr",quietly=TRUE)) install.packages("purrr")' For corporate

[Rd] setClass accepts slot-mismatch between slots and prototype arguments

2019-01-10 Thread William Dunlap via R-devel
I was installing the 'diffobj' package into TERR and got an error from the call StyleSummary <- setClass("StyleSummary", slots=c(container="ANY", body="ANY", map="ANY"), prototype=list( container=function(x) sprintf("\n%s\n", paste0(x, collapse="")), body=identity,

Re: [Rd] history of objects() and ls()

2019-01-03 Thread William Dunlap via R-devel
S-PLUS took it from S, sometime in the early 1990's. The "White Book" ("Statistical Models in S", Chambers and Hastie, eds.,1992), uses objects() on p.88.. Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Jan 3, 2019 at 4:47 PM Peter Dalgaard wrote: > As far as I remember, this comes

Re: [Rd] formula(model.frame(..)) is misleading

2018-12-21 Thread William Dunlap via R-devel
Emeritus > McMaster University > Hamilton, Ontario, Canada > Web: http::/socserv.mcmaster.ca/jfox > > > On Dec 21, 2018, at 2:51 AM, Martin Maechler > wrote: > > > >>>>>> William Dunlap via R-devel > >>>>>>on Thu, 20 Dec 2018 1

[Rd] formula(model.frame(..)) is misleading

2018-12-20 Thread William Dunlap via R-devel
When formula() is applied to the output of model.frame() it ignores the formula in the model.frame's 'terms' attribute: > d <- data.frame(A=log(1:6), B=LETTERS[rep(1:2,c(2,4))], C=1/(1:6), D=rep(letters[25:26],c(4,2)), Y=1:6) > m0 <- model.frame(data=d, Y ~ A:B) > formula(m0) Y ~ A + B

[Rd] order(decreasing=c(TRUE,FALSE),...)

2018-12-04 Thread William Dunlap via R-devel
The NEWS file for R-devel (as of 2018-11-28 r75702) says • order(, decreasing=c(TRUE,FALSE)) could fail in some cases. Reported from StackOverflow via Karl Nordström. However, either I don't understand the meaning of decreasing=c(TRUE,FALSE) or there are still problems. I thought

Re: [Rd] named arguments discouraged in `[.data.frame` and `[<-.data.frame`

2018-11-28 Thread William Dunlap via R-devel
They can get bitten in the last two lines of this example, where the 'x' argument is not first: > d <- data.frame(C1=c(r1=11,r2=21,r3=31), C2=c(12,22,32)) > d[1,1:2] C1 C2 r1 11 12 > `[`(d,j=1:2,i=1) C1 C2 r1 11 12 Warning message: In `[.data.frame`(d, j = 1:2, i = 1) : named arguments

[Rd] unlockEnvironment()?

2018-10-10 Thread William Dunlap via R-devel
R lets one lock an environment with both an R function, base::lockEnvironment, and a C function, R_LockEnvironment, but, as far as I can tell, no corresponding function to unlock an environment. Is this omission on principle or just something that has not been done yet? I ask because several

Re: [Rd] memory footprint of readRDS()

2018-09-18 Thread William Dunlap via R-devel
The ratio of object size to rds file size depends on the object. Some variation is due to how header information is stored in memory and in the file but I suspect most is due to how compression works (e.g., a vector of repeated values can be compressed into a smaller file than a bunch of random

Re: [Rd] ROBUSTNESS: x || y and x && y to give warning/error if length(x) != 1 or length(y) != 1

2018-08-30 Thread William Dunlap via R-devel
Should the following two functions should always give the same result, except for possible differences in the 'call' component of the warning or error message?: f0 <- function(x, y) x || y f1 <- function(x, y) if (x) { TRUE } else { if (y) {TRUE } else { FALSE } } And the same for the 'and'

Re: [Rd] Where does L come from?

2018-08-27 Thread William Dunlap via R-devel
Rich Calaway pointed out that S4 came out c. 1996-97, not 1991. Bill Dunlap TIBCO Software wdunlap tibco.com On Sun, Aug 26, 2018 at 8:30 PM, William Dunlap wrote: > > the lack of a decimal place had historically not been significant > > Version 4 of S (c. 1991) and versions of S+ based on it

Re: [Rd] Where does L come from?

2018-08-26 Thread William Dunlap via R-devel
> the lack of a decimal place had historically not been significant Version 4 of S (c. 1991) and versions of S+ based on it treated a sequence of digits without a decimal point as integer. Bill Dunlap TIBCO Software wdunlap tibco.com On Sat, Aug 25, 2018 at 4:33 PM, Duncan Murdoch wrote: >

Re: [Rd] longint

2018-08-15 Thread William Dunlap via R-devel
Note that include/S.h contains /* This is a legacy header and no longer documented. Code using it should be converted to use R.h */ ... /* is this a good idea? - conflicts with many versions of f2c.h */ # define longint int S.h was meant to be used while converting to R C code

Re: [Rd] validspamobject?

2018-08-15 Thread William Dunlap via R-devel
That was my first thought (my second was trace(.Deprecated,...)). However, the spam authors don't use .Deprecated() or warning() to tell about deprecated functions. See spam/R/deprecated.R: validspamobject <- function( ...) { #.Deprecated('validate_spam()') message("`validspamobject()`

Re: [Rd] trace in uniroot() ?

2018-08-13 Thread William Dunlap via R-devel
To record the value of the function as well as the arguments, you can use the following instrumentObjectiveFunction <- function(FUN) { newFUN <- local({ INFO <- list() function(...) { value <- FUN(...) INFO[[length(INFO)+1]] <<- list(args=list(...),

Re: [Rd] trace in uniroot() ?

2018-08-13 Thread William Dunlap via R-devel
I tend to avoid the the trace/verbose arguments for the various root finders and optimizers and instead use the trace function or otherwise modify the function handed to the operator. You can print or plot the arguments or save them. E.g., > trace(ff, print=FALSE, quote(cat("x=", deparse(x),

Re: [Rd] apply with zero-row matrix

2018-08-13 Thread William Dunlap via R-devel
vapply has a mandatory FUN.VALUE argument which specifies the type and size of FUN's return value. This helps when you want to cover the 0-length case without 'if' statements. You can change your apply calls to vapply calls, but they will be a bit more complicated. E.g., change

Re: [Rd] odd behavior of names

2018-07-29 Thread William Dunlap via R-devel
Bugzilla issue 16101 describes another first-list-name-printed-differently oddity with the Windows GUI version of R: > a <- "One is \u043E\u0434\u0438\u043D\nTwo is \u0434\u0432\u0430\n" > Encoding(a) # expect "UTF-8" [1] "UTF-8" > sapply(strsplit(a, "\n")[[1]], charToRaw)[c(1,1,2)] $`One is

[Rd] NEWS vs. inst/NEWS

2018-07-06 Thread William Dunlap via R-devel
'Writing R Extensions', section 1.1.5, in the part about a package's 'inst' directory, says that if NEW is in both the top level and in the inst directory, the in inst will be installed: Note that with the exceptions of INDEX, LICENSE/LICENCE and NEWS, information files at the top level of the

[Rd] minor problem in XML package

2018-06-06 Thread William Dunlap via R-devel
[The package XML is labelled ORPHANED and a comment says the CRAN team maintains it. I am not sure what address to send this to.] In package XML version 3.98.1.11, RUtils.c registers the C function RS_XML_xmlNodeChildrenReferences twice. The registration information is identical but this could

Re: [Rd] length of `...`

2018-05-03 Thread William Dunlap via R-devel
In R-3.5.0 you can use ...length(): > f <- function(..., n) ...length() > f(stop("one"), stop("two"), stop("three"), n=7) [1] 3 Prior to that substitute() is the way to go > g <- function(..., n) length(substitute(...())) > g(stop("one"), stop("two"), stop("three"), n=7) [1] 3

Re: [Rd] issue with model.frame()

2018-05-01 Thread William Dunlap via R-devel
You run into the same problem when using 'non-syntactical' names: > mfB <- model.frame(y ~ `Temp(C)` + `Pres(mb)`, data=data.frame(check.names=FALSE, y=1:10, `Temp(C)`=21:30, `Pres(mb)`=991:1000)) > match(attr(terms(mfB), "term.labels"), names(mfB)) # gives NA's [1] NA NA > attr(terms(mfB),

[Rd] disappearing tempdir()

2018-04-24 Thread William Dunlap via R-devel
Recent versions of Windows will remove empty directories from areas that Windows considers places for temporary files. It does not seem to matter how old they are; empty directories are found and removred c. once a day. I haven't seen any documentation on this feature but I think you can turn if

Re: [Rd] odd assignInNamespace / setGeneric interaction

2018-04-19 Thread William Dunlap via R-devel
oo many R startup tweaking > possibilities, notably via environment variables. > [e.g., the current ways to pre-determine the active .libPaths() in R, > and the fact the R calls R again during 'R CMD check' etc, > sometimes drives me crazy when .libPaths() become incompatible > for

[Rd] odd assignInNamespace / setGeneric interaction

2018-04-18 Thread William Dunlap via R-devel
A coworker got tired of having to type 'yes' or 'no' after quitting R: he never wanted to save the R workspace when quitting. So he added assignInNamespace lines to his .Rprofile file to replace base::q with one that, by default, called the original with save="no"..

Re: [Rd] strange warning: data() error?

2018-04-16 Thread William Dunlap via R-devel
data(package="survival") gives, in part, cgd Chronic Granulotomous Disease data cgd0 (cgd) Chronic Granulotomous Disease data colon Chemotherapy for Stage B/C colon cancer flchain Assay of serum free light chain for 7874

Re: [Rd] alpha transparency doesn't work for lines when xpd=TRUE

2018-04-16 Thread William Dunlap via R-devel
The problem occurs in the Windows GUI with the 'windows()' graphics device. In the following example the red diagonal line appears in 3 plots but not in the one with xpd=TRUE and alpha.f=0.9. > par(mfrow=c(2,2)) > for(xpd in c(FALSE, TRUE)) for(alpha.f in c(.9, 1))

Re: [Rd] backquotes and term.labels

2018-03-05 Thread William Dunlap via R-devel
I believe this has to do terms() making "term.labels" (hence the dimnames of "factors") with deparse(), so that the backquotes are included for non-syntactic names. The backquotes are not in the column names of the input data.frame (nor model frame) so you get a mismatch when subscripting the

Re: [Rd] readLines interaction with gsub different in R-dev

2018-02-17 Thread William Dunlap via R-devel
I think the problem in R-devel happens when there are non-ASCII characters in any of the strings passed to gsub. txt <- vapply(list(as.raw(c(0x41, 0x6d, 0xc3, 0xa9, 0x6c, 0x69, 0x65)), as.raw(c(0x41, 0x6d, 0x65, 0x6c, 0x69, 0x61))), rawToChar, "") txt #[1] "Amélie" "Amelia" Encoding(txt) #[1]

[Rd] Trailing underscores on C function names

2018-02-07 Thread William Dunlap via R-devel
In the fastmatch package, version 1.1-0, there is a C function called "ctapply_", with a trailing underscore. However, the NAMESPACE's call to useDynLib refers to "ctapply", without the trailing underscore. % grep ctapply NAMESPACE {R,src}/* NAMESPACE:useDynLib(fastmatch, C_fmatch = fmatch,

Re: [Rd] R-gui sessions end when executing C-code

2018-02-02 Thread William Dunlap via R-devel
SEXP eta = PROTECT(allocVector(REALSXP,H_c)); n_prot++; double *eta_c; eta_c = REAL(eta); for (i=0;i

Re: [Rd] as.character(list(NA))

2018-01-22 Thread William Dunlap via R-devel
> From: R-devel [mailto:r-devel-boun...@r-project.org] On Behalf Of Hervé > Pagès > Sent: Monday, January 22, 2018 2:01 PM > To: William Dunlap <wdun...@tibco.com>; Patrick Perry < > ppe...@stern.nyu.edu> > Cc: r-devel@r-project.org > Subject: Re: [Rd] as.char

Re: [Rd] as.character(list(NA))

2018-01-20 Thread William Dunlap via R-devel
I believe that for a list as.character() applies deparse() to each element of the list. deparse() does not preserve NA-ness, as it is intended to make text that the parser can read. > str(as.character(list(Na=NA, LglVec=c(TRUE,NA), Function=function(x){x+1}))) chr [1:3] "NA" "c(TRUE, NA)"

Re: [Rd] Fwd: R/MKL Intel 2018 Compatibility

2018-01-08 Thread William Dunlap via R-devel
The x and y passed to dgemm in that code are pointers to the same memory, thus breaking Fortran's no-aliasing rule. Is it possible the MKL depends on the caller following that rule? You might try dsyrk() instead of dgemm. Bill Dunlap TIBCO Software wdunlap tibco.com On Mon, Jan 8, 2018 at 6:57

Re: [Rd] silent recycling in logical indexing

2018-01-04 Thread William Dunlap via R-devel
I have never used this construct. However, part of my job is seeing how well CRAN packages work in our reimplementation of the R language and I am continually surprised by the inventiveness of package writers. Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Jan 4, 2018 at 1:44 PM, Ben

Re: [Rd] silent recycling in logical indexing

2018-01-04 Thread William Dunlap via R-devel
One use case is when you want to extract every third item, starting with the second, of an arbitrary vector with x[c(FALSE, TRUE, FALSE)] instead of x[seq_along(x) %% 3 == 2] Bill Dunlap TIBCO Software wdunlap tibco.com On Thu, Jan 4, 2018 at 11:56 AM, Ben Bolker

Re: [Rd] winbuilder warning message wrt function pointers

2017-12-29 Thread William Dunlap via R-devel
And remove the cast on the return value of R_GETCCallable. And check that your function is found before using it. #include #include #include void bdsmatrix_prod4(int nrow,int nblock, int *bsize, double *bmat, double *rmat, int nfrail, double

Re: [Rd] winbuilder warning message wrt function pointers

2017-12-29 Thread William Dunlap via R-devel
Try changing static void (*fun)() = NULL; to DL_FUNC fun = NULL; Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Dec 29, 2017 at 5:14 AM, Therneau, Terry M., Ph.D. < thern...@mayo.edu> wrote: > I've recently updated the coxme package, which calls internal routines > from the bdsmatrix

Re: [Rd] Wish List: base::source() + Add Execution Time Argument

2017-12-21 Thread William Dunlap via R-devel
Is source() the right place for this? It may be, but we've had customers who would like this sort of thing done for commands entered by hand. And there are those who want a description of any "non-triivial" objects created in .GlobalEnv by each expression, ... Do they need a way to wrap each

Re: [Rd] tryCatch in on.exit()

2017-12-01 Thread William Dunlap via R-devel
Things work as I would expect if you give stop() a condition object instead of a string: makeError <- function(message, class = "simpleError", call = sys.call(-2)) { structure(list(message=message, call=call), class=c(class, "error", "condition")) } f0 <- function() {

[Rd] tryCatch in on.exit()

2017-12-01 Thread William Dunlap via R-devel
The following example involves a function whose on.exit() expression both generates an error and catches the error. The body of the function also generates an error. When calling the function wrapped in a tryCatch, should that tryCatch's error function be given the error from the body of the

Re: [Rd] check does not check that package examples remove tempdir()

2017-11-08 Thread William Dunlap via R-devel
's a plan to make check = TRUE the default though. > > /Henrik > > On Wed, Nov 8, 2017 at 4:43 PM, William Dunlap via R-devel > <r-devel@r-project.org> wrote: > > I was looking at the CRAN package 'bfork-0.1.2', which exposes the Unix > > fork() and waitpid() calls

[Rd] check does not check that package examples remove tempdir()

2017-11-08 Thread William Dunlap via R-devel
I was looking at the CRAN package 'bfork-0.1.2', which exposes the Unix fork() and waitpid() calls at the R code level, and noticed that the help file example for bfork::fork removes R's temporary directory, the value of tempdir(). I think it happens because the forked process shares the value

Re: [Rd] Extreme bunching of random values from runif with Mersenne-Twister seed

2017-11-03 Thread William Dunlap via R-devel
Another other generator is subject to the same problem with the same probabilitiy. > Filter(function(s){set.seed(s, kind="Knuth-TAOCP-2002");runif(1,17,26)>25.99}, 1:1) [1] 280 415 826 1372 2224 2544 3270 3594 3809 4116 4236 5018 5692 7043 7212 7364 7747 9256 9491 9568 9886 Bill Dunlap

Re: [Rd] Extreme bunching of random values from runif with Mersenne-Twister seed

2017-11-03 Thread William Dunlap via R-devel
The random numbers in a stream initialized with one seed should have about the desired distribution. You don't win by changing the seed all the time. Your seeds caused the first numbers of a bunch of streams to be about the same, but the second and subsequent entries in each stream do look

Re: [Rd] Cannot Compute Box's M (Three Days Trying...)

2017-10-27 Thread William Dunlap via R-devel
Does it work if you supply the closing parenthesis on the call to boxM? The parser says the input is incomplete and a missing closing parenthesis would cause that error.. // create a string command with that variable name.String boxVariable = "boxM(boxMVariable [,-5], boxMVariable[,5]"; // try

  1   2   >