[R] Error: if statement: missing value where TRUE/FALSE needed
Duncan Murdoch
murdoch@dunc@n @end|ng |rom gm@||@com
Thu Jan 6 18:14:10 CET 2022
I've downloaded your code, and I'm seeing some strange results. When I
source MetroTest.R, it creates a log file ending
Error in if (xseg[w1] > ub & m == 1) olrmark[wi] = TRUE else if
(xseg[w1] < :
missing value where TRUE/FALSE needed
as you saw. But when I comment out the sink() lines in it, I don't see
an error. If I comment out only the first sink line, i.e. run with
my_log <- file("MetroTest.log")
#sink(my_log, append = TRUE, type = "output") # Writing console
output to log file
sink(my_log, append = TRUE, type = "message")
I get an error on the last line:
> sink(my_log, append = TRUE, type = "message")
Error in sink(my_log, append = TRUE, type = "message") :
'file' must be NULL or an already open connection
Once running this code R crashed.
I find all of that quite perplexing. I suspect one of the packages has
some buggy code, but I don't know which one. Currently I'm running the
script after running gctorture(); that's really slow. If it turns up
anything I'll let you know.
Duncan Murdoch
On 06/01/2022 10:23 a.m., Chuck Coleman wrote:
> I've created a git repository at https://sourceforge.net/p/rhelp/code/ci/master/tree/. I've used git before, so that's what I chose. I had forgotten that sourceforge didn't have a download all files command. I don't post files often.
>
> About the semantics of "crash": Perhaps I'm showing my age here. It used to be that programs crashed, bombed, etc. when they hit unanticipated errors. These programs lived in a OS without an intermediary. Now, we have programs of programs running within multiple applications on multiple servers with multiple OSs. Since I'm not a programmer by profession, I've had little need to use these constructs.
>
> Chuck Coleman
>
>
>
> On Wednesday, January 5, 2022, 02:51:07 PM EST, Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>
>
>
>
>
> On 05/01/2022 2:09 p.m., Ivan Krylov wrote:
>
>> On Wed, 5 Jan 2022 21:22:37 +0300
>> Ivan Krylov <krylov.r00t using gmail.com> wrote:
>>
>>> How exactly do you check for a missing argument?
>>
>> To answer my own question, the check is
>>
>>>> browser(expr = {
>>>> is.na(w1) | is.na(ub) | is.na(m) | is.na(wi) | is.na(lb)
>>>> })
>>
>> I think that there are NAs in xseg, which I don't see a check for. In
>> particular, a few lines above, there's
>>
>>>> md = median( xseg, na.rm = TRUE);
>>>> if (robust) sdd = mad(xseg,na.rm = TRUE)
>>>> else sdd = sd(xseg,na.rm = TRUE)
>>
>> ...which seems to suggest they are expected to happen there.
>>
>> Not sure which advice to give regarding the choice of file hosting
>> service. On the one hand, SourceForge lets you upload a whole directory
>> of files in arbitrary formats, but isn't very convenient do download
>> more than one file from. On the other hand, "pastebin" services like
>> http://paste.debian.net/ or http://paste.org.ru/ let us browse the code
>> right away, without having to look at the "Your download will start
>> shortly..." screen, but don't host *.RData or more than one file per
>> link. I guess that some other code hosting service like
>> SourceHut/GitHub/GitLab/Gitea/... could fulfil both criteria.
>
>
> I would take one step back, and suggest that if any project has as many
> scripts as this one, it should be put in an R package. You can
> distribute that by building it into a tar.gz file and putting that
> single file in a place where people can download it. Github and R-forge
> work well for packages, and I assume other hosting services do too,
> though I haven't used many.
>
> People seem to be unreasonably reluctant to put their code into packages.
>
> Duncan Murdoch
>
More information about the R-help
mailing list