Simple English Explanation:
Let’s break this down into the relevant parts. The $ operator is one of R’s default methods, generally used to access the individual elements of data frame or list. For the sake of this article, the R language considers lists to be an recursive object – one which can be accessed through recursive programming methods. You have most likely attempted to apply the $ operator to a different data structure.
And as you can see, the R language doesn’t particularly like this turn of events, thus our lovely error message:
R Error in x$ed : $ operator is invalid for atomic vectors
When Do We See This? What Are Atomic Vectors?
You have most likely attempted to apply the $ operator to access an element of a vector (aka an array or string in other languages). These are referred to as atomic vectors in R. They occupy a continuous space in memory, each cell after the next. So they do not have the same access structure as a list or dictionary.
Individual elements of an atomic vector can be accessed sequentially. For example, position 1, position 2, etc. Notation for this is vect, vect, vect.
You can also express this as a variable, for inclusion in an iterative loop.
How Do I Fix This?
Try converting your $ operator to a bracket reference. You can also use the getElement() function.
> testlist <- c(1,2,3) > testlist$s Error in testlist$s : $ operator is invalid for atomic vectors > testlist  1 > getElement(testlist,1)  1
As you can see, we successfully triggered the error in this example by using the $ operator to attempt to access an atomic vector (our array) improperly. By using brackets or getElement(), we get the desired result.
Note that this error might be buried a level or two down in your code, if there is a particular method or procedure that was fed a type of data it wasn’t expecting to work with. Be ready to dig a little.