[Bioc-devel] Strange "internal logical NA value has been modified" error

Pariksheet Nanda p@r|k@heet@n@nd@ @end|ng |rom uconn@edu
Thu Oct 14 02:46:37 CEST 2021

Hi Hervé,

On 10/13/21 12:43 PM, Hervé Pagès wrote:
> On 12/10/2021 15:43, Pariksheet Nanda wrote:
>> The function in question is:
>> replace_unstranded <- function (gr) {
>>      idx <- strand(gr) == "*"
>>      if (length(idx) == 0L)
>             ^^^^^^^^^^^^^^^^^
> Not related to the "internal logical NA value has been modified" error
> but shouldn't you be doing '!any(idx)' instead of 'length(idx) == 0L' here?

Indeed.  Although in a roundabout way the result somehow satisfied the 
unit tests, idx is a poor choice of name because it's really a mask, and 
your suggestion of OR-ing the mask FALSE values with any() is more 
intuitive.  The name is_unstranded might be less cryptic than mask.

Applying your suggestion of the correct condition uncovered a bug where 
return(gr) was returning the unsorted value, which is inconsistent with 
the behavior of the final statement returns a sorted value.  So changed 
to return(sort(gr)) for a consistent contract.

Fixed in f6892ea

> Best,
> H.
>>          return(gr)
>>      sort(c(
>>          gr[! idx],
>>          `strand<-`(gr[idx], value = "+"),
>>          `strand<-`(gr[idx], value = "-")))
>> }


More information about the Bioc-devel mailing list