Still relatively new to R. Trying to have dynamic variables in a loop but running into all sorts of problems. Initial code looks something like this (but bigger)
data.train$Pclass_F <- as.factor(data.train$Pclass)
data.test$Pclass_F <- as.factor(data.test$Pclass)
which I'm trying to build into a loop, imagining something like this
datalist <- c("data.train", "data.test")
for (i in datalist){
i$Pclass_F <- as.factor(i$Pclass)
}
which doesn't work. A little research implies that inorder to convert the string datalist into a variable I need to use the get function. So my next attempt was
datalist <- c("data.train", "data.test")
for (i in datalist){
get(i$Pclass_F) <- as.factor(get(i$Pclass))
}
which still doesn't work Error in i$Pclass : $ operator is invalid for atomic vectors. Tried
datalist <- c("data.train", "data.test")
for (i in datalist){
get(i)$Pclass_F <- as.factor(get(i)$Pclass)
}
which still doesn't work Error in get(i)$Pclass_F <- as.factor(get(i)$Pclass) :
could not find function "get<-". Even tried
datalist <- c("data.train", "data.test")
for (i in datalist){
get(i[Pclass_F]) <- as.factor(get(i[Pclass]))
}
which still doesn't work Error in get(i[Pclass]) : object 'Pclass' not found. The tried
datalist <- c("data.train", "data.test")
for (i in datalist){
get(i)[Pclass_F] <- as.factor(get(i)[Pclass])
}
which still doesn't work Error in '[.data.frame'(get(i), Pclass) : object 'Pclass' not found
Now realized I never included data so nobody can run this themselves, but just to show it's not a data problem
> class(data.train$Pclass)
[1] "integer"
> class(data.test$Pclass)
[1] "integer"
> datalist
[1] "data.train" "data.test"
get. Ban it from your lexicon until you are much better at R. Anytime you think "dynamic variable", stop and build a named list. Put them in an actual list and using indexing:L <- list(data.train = data.train,data.test = data.test).getandassign.