RQDAassist 0.5.1

There’s a new release of RQDAassist, a package that was created to help RQDA users to overcome the difficulty of installing it on R version 4. The issues that led to this are explained in this post.

The need for today’s update is informed by the arrival of R 4.2.0 (“Vigorous Calisthenics”), which has presented some difficulty with the installation of key RQDA dependencies.

Rationale

In R 4.2 the R Core Team has made 2 changes to the build system/toolset for Windows machines. They are:

  1. Migration of R builds (as well as package binaries) to the Universal C Runtime (UCRT).
  2. Changes in Rtools significantly affect how R and packages are built from source.

R and UCRT

As of version 4.2, R is to now switch from MSVCRT to UCRT. This is to enable native encoding of R builds on Windows to UTF-8. This is a welcome development as it makes internationalization easier, but as R Core has admitted, it also presents a few challenges. For a more detailed description of these changes, read this article from cran.r-project.org.

Concerning RQDAassist, some of the archived binaries like RGtk2 required for RQDA are not compatible with R 4.2 since they were built with the old runtime. This is the first problem we encountered. The second problem is discussed in the next section.

Rtools42

In order to build R or any packages from source on Windows, we need Rtools, a collection of compilers, shells utilities, etc. For R 4.2, this toolchain was modified both in its content and behavior. With the failure to install RGtk2 binaries as mentioned earlier, we attempted to build RGtk2 from source (the function RQDAassist::install() provides an argument for both Installation approaches). This also proved to be problematic with Rtools42, particularly when compiling the C code in RGtk2 with the GTK distribution.

Additional work will be required to overcome this challenge and there’s the possibility that an all-out upgrade of RGtk2 itself might be necessary. From the communication by the RGtk2 author, it seems the package was “accidentally” archived on CRAN, so part of the plan is to monitor the conversation before deciding on the next course of action.

The Why

One may wonder why I’m going through all this hassle. Why not just abandon RQDA and move on to some other software for qualitative data analysis? Well, I don’t know for sure – call it stubbornness if you will. But I have a team of analysts that have used RQDA working for me since 2019. I’ve invested a lot of time, energy, and money to get to this point where I can use this tool to provide the services for which we get paid.

But it’s also been a tremendous learning experience and I get emails from researchers who need some support to continue using RQDA. I am therefore motivated to do my little bit to help.

Changes to RQDAassist

The current change to RQDAassist is mainly to disable the installation of RQDA on R 4.2 and above. This is expected to be a temporary fix until such a time when we are able to migrate it to a current, upgraded R version.

Other changes include more efficient installation of binary RQDA dependencies like RGtk2 and cairoDevice, more informative messages for users, and a cleaner installation experience. Any attempt , however, to install it on R 4.2 or above will result in the following error message:

ERROR: this R is version 4.2.0, package 'RQDAassist' requires R < 4.2

Installation

To install RQDAassist, start your R session and use the following code

if (!requireNamespace("remotes")
  install.packages("remotes")
remotes::install_github("RQDAassist")

To install RQDA, run

RQDAassist::install()

and for more information visit the help file with ?RQDAassist::install.

Leave a comment

Filed under Computers & Internet

My Network Sharing Apps

This is going to be very brief. The other day I watched a YouTube video by a well-known online business coach and was introduced to network (i.e. internet subscription data) sharing applications on the Google Play store.

Now I refrain from mentioning these apps here because I’m not trying to disparage them in any way. The purpose of this post is to inform those whom I shared this information with on what I’ve done with these apps. Well, I’ve deleted them.

I deleted them for the simple reason that they are not a good way for me to make money. The apps run in the background but I have to keep restarting them. That, for me, is a big problem because I simply don’t have that kind of time. I do mine the Pi cryptocurrency, but I have to tap on it only once a day and it runs well, so i can live with that. These apps, however, require my attention every 30 mins or so because they keep going off. It’s possible this is so because the roving IP of my mobile provider – it may be more stable with WiFi connections but I’ve not tried it out yet.

Some online “businesses” seem more like slavery

The payout is definitely not worth my time – i can’t earn up to a dollar per day on any of those apps. The time required to keep restarting and monitoring them to earn next to nothing is a pure waste of time, in my opinion. Online surveys are better; at least they teach you a thing or two.

So, guys (you know yourselves), I’m out. You’re welcome to continue and see what the future holds with the apps. As for me, I don’t have the time to spare.

Leave a comment

Filed under Rants

Missionary clothing are a necessity in Nigeria

My wife and I have this joke we’ve shared since our early days (we’ve been married 22 years).

At any point in time, we want to have what we’ve dubbed ‘missionary’ clothes. What does this mean? Missionary clothes are those that do not require ironing to look acceptable.

The term was coined by Her Royal Majesty and it’s in reference to the cassock worn by priests and monks.

The missionary outfit

In Nigeria, power supply has always been erratic and sometimes could be totally absent for days. Have a meeting to attend today? Tough luck, you might end up putting on a rumpled shirt.

Some people avoid this burden by sending their clothes to ‘washermen’, local laundrymen who will also iron the clothes for you. This is big business in our area.

But it’s always a good idea to have some missionary clothes.

What do you think?

Leave a comment

Filed under Rants

RQDAassist 0.5.0

This is to introduce a new iteration of the RQDAassist package (version 0.5.0). This version comes with the possibility of installing RGtk2 and cairoDevice via their archived binaries, instead of solely installing source tarballs. The advantage is the installation is much quicker and the interactions with the GTK distribution are much more easily handled. The downside of the binary installation is that it can only be done reliably during an interactive R session.

The binary installation option is the default. Thus, to install RQDA, we run

RQDAassist::install()

To install via source, we change the arguments:

RQDAassist::install(type = "source")

When doing the binary installation, if RGtk2 is newly installed and GTK does not exist on the machine, the function stops at some point and the user is invited to install GTK. This is done by first attaching the package

library(RGtk2)

The user is then prompted with a dialog, for the installation of Gtk+.

Dialog for the installation of GTK+
Dialog for GTK+ installation

After GTK+ is installed, one may see an error message in the console–ignore this. Once done, run RQDAassist::install() again, and the remaining packages will be installed.

For more information about this version, please visit the package’s GitHub page. Let me know your thoughts in the comments.

Leave a comment

Filed under data science

naijR 0.3.1

The naijR package has been updated (version 0.3.1) and is now available on CRAN. Here are the most recent user-visible changes:

New stuff

Creation of custom objects representing LGAs

The function lgas is used to construct objects representing the Local Government Areas (LGAs) as described in an earlier post. The function, when supplied the name of a State, automatically creates an object with all the LGAs belonging to that State. On the other hand, when it receives the name(s) of actual LGAs, it can also create similar objects. The problem is that there are some LGAs that are named after their State – namely Bauchi, Ebonyi, Ekiti, Gombe, Katsina, and Kogi. To avoid this mix-up, we can now state uneqoivocally whether we want to work with the LGA or State by setting the strict argument to TRUE or FALSE, respectively. Thus

lgas("Ekiti")
## LGAs
## ---- 
## * Ado Ekiti
## * Efon
## * Ekiti East
## * Ekiti South-West
## * Ekiti West
## * Emure
## * Gbonyin
## * Ido Osi
## * Ijero
## * Ikere
## * Ikole
## * Ilejemeje
## * Irepodun/Ifelodun
## * Ise/Orun
## * Moba
## * Oye 
# Return only specified LGA
(x <- lgas("Ekiti", strict = TRUE))
## States
## ------ 
## * Ekiti 
# Confirm the object
class(x)
## [1] "lgas"      "regions"   "character"

Bug fix for State-level LGA maps

There was a subtle bug that was introduced in an earlier update that really ruined some of the LGA maps for some States. For example, the Borno State LGA maps turned out like this:

map_ng(lgas("Borno"))

One may see something drawn in the southwesterly direction–this is actually an LGA from a different State with a name similar to one in Borno. Some other States’ maps were much worse because of this bug. This was fixed by the introduction of stricter subsetting rules. Under the current version of naijR, the map of Borno’s LGAs now looks like this:

Installation

The new version of naijR can be installed in an active R session from CRAN with:

install.packages("naijR")

To try out development versions as they come, you can get it from GitHub, after loading either the devtools or remotes package, with:

install_github("BroVic/naijR")

Happy coding!

Leave a comment

Filed under data science