So i am trying to fit a random forest classifier for my dataset. I am very new to R and i imagine this is a simple formatting issue.
I read in a text file and transform my dataset so it is of this format: (taking out confidential info)
>head(df.train,2)
   GOLGA8A     ITPR3   GPR174  SNORA63    GIMAP8     LEF1    PDE4B LOC100507043    TGFB1I1    SPINT1
Sample1  3.726046 3.4013711 3.794364 4.265287 -1.514573 7.725775 2.162616    -1.514573 -1.5145732 -1.514573
Sample2 4.262779 0.9261892 4.744096 7.276971 -1.514573 4.694769 4.707387     2.031476 -0.8325444  2.615991
...
...
CD8B     FECH    PYCR1 MGC12916     KCNA3 resp
Sample1  -1.514573 2.099336 3.427928 1.542951 -1.514573    1
Sample2 -1.145806 1.204241 2.846832 1.523808  1.616791    1
In essence the columns are my features and the rows my samples, the last column is my response vector which is a column of factors, resp.
Then i use:
set.seed(1) #Set the seed in order to gain reproducibility
RF1 = randomForest(resp~., data=df.train,ntree=1000,importance=T,mtry=3)
Simply trying to train the RF on my column resp using the other columns as features.
But I obtain the error:
Error in eval(expr, envir, enclos) : object 'PCNA-AS1' not found
However, looking into my training set I can clearly find that column, e.g with:
sort(unique(colnames(df.train))
So I don't really understand the error or where to go from here. My apologies if I haven't posed the question in the correct way, thanks for any and all help!
I would suspect this comes from having an illegal variable name in your data frame. Let's consider a data frame that just has a response variable resp and a variable (illegally) named PCNA-AS1:
(dat <- structure(list(`PCNA-AS1` = c(1, 2, 3), resp = structure(c(2L, 2L, 1L), .Label = c("0", "1"), class = "factor")), .Names = c("PCNA-AS1", "resp"), row.names = c(NA, -3L), class = "data.frame"))
#   PCNA-AS1 resp
# 1        1    1
# 2        2    1
# 3        3    0
Now when we train a random forest we get the indicated error:
library(randomForest)
mod <- randomForest(resp~., data=dat)
# Error in eval(expr, envir, enclos) : object 'PCNA-AS1' not found
A natural solution to this problem would be converting your variable names to all be legal:
names(dat) <- make.names(names(dat))
dat
#   PCNA.AS1 resp
# 1        1    1
# 2        2    1
# 3        3    0
mod <- randomForest(resp~., data=dat)
Now the model trains with no error.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With