Chuck Coleman
2022-Jan-06 15:23 UTC
[R] Error: if statement: missing value where TRUE/FALSE needed
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 at 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 at 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
Duncan Murdoch
2022-Jan-06 17:14 UTC
[R] Error: if statement: missing value where TRUE/FALSE needed
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 at 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 at 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 >