Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

When you take a photograph, you can include the date in the image, so you remember when you created it.  (In fact, under EXIF format, it’s stored in the image file anyway, even if it doesn’t appear in the picture.)  Wouldn’t it be nice to make annotations in the objects you create under R?

For example, here is a random forests analysis I did on some Census data:

library(freqparcoord)
data(prgeng)
pg <- prgeng
pggrd <- pg[pg$educ >= 14,] library(randomForest) rf1 <- randomForest(wageinc ~ age,data=pggrd)  The R object rf1 here has various components, which you can check via the call names(rf1). But since rf1 is an S3 object, it is thus just a list, and one can add components to a list object at any time. So, one can type, say, rf1$daterun <- date()


The point is that the date is now part of the object, and when you save the object to a file, e-mail it to someone else and so on, the date can always be checked.

I can also save my set up code there too. I could for example make a function from my setup code, say using edit(), and then assign it to rf1:

> f
function() {
library(freqparcoord)
data(prgeng)
pg <- prgeng
pggrd <- pg[pg$educ >= 14,] library(randomForest) rf1 <<- randomForest(wageinc ~ age,data=pggrd) } > rf1$setupcode <-f
# check it
> rf1$setupcode function() { library(freqparcoord) data(prgeng) pg <- prgeng pggrd <- pg[pg$educ >= 14,]
library(randomForest)
rf1 <<- randomForest(wageinc ~ age,data=pggrd)
}



You can do this with other S3 objects returned from R functions, e.g. plot objects of type “gg” returned from ggplot2 operations.

Some “purists” may object to tinkering with objects like this. If you have such an objection, you can create a formal subclass of the given class, e.g. one named “mygg” in the plot example. (If the object is of S4 type, you’ll need to do this anyway.)