R - A column from multiple tables needs to be changed from factor to character -


i have vector c("d1","d2","d3") in d1, d2,d3 data tables. each of them has column called id factor variable. need convert id columns factor character in d1,d2,d3 tables.

i have tried following:

  d<-c("d1","d2","d3")   #[1]   invisible(lapply(d,function(x){get(x)[["id"]]<-as.character(get(x)[["id"]])}))   #[2]   invisible(lapply(d,function(x){get(x)[,list(id)] <- as.character(get(x)[,list(id)])})) 

please note don't want convert other factor columns d1,d2,d3 character columns except id.

any appreciated

here's approach can try. uses list2env (which many people wisely recommend against) replace objects in .globalenv.

the approach work data.frames , data.tables, though better use different approach if using data.tables.

d1 <- d2 <- d3 <- data.frame(id = c("a", "b"), num = 1:2) library(data.table) d3 <- as.data.table(d1)[, id := factor(id)] d1 #   id num # 1    1 # 2  b   2 str(d1) # 'data.frame': 2 obs. of  2 variables: #  $ id : factor w/ 2 levels "a","b": 1 2 #  $ num: int  1 2 str(d3) # 'classes ‘data.table’ , 'data.frame':   2 obs. of  2 variables: #  $ id : factor w/ 2 levels "a","b": 1 2 #  $ num: int  1 2 #  - attr(*, ".internal.selfref")=<externalptr>   list2env(lapply(mget(c("d1","d2","d3")),                  function(x) { x[["id"]] <- as.character(x[["id"]]) ; x}),           .globalenv) str(d1) # 'data.frame': 2 obs. of  2 variables: #   $ id : chr  "a" "b" #   $ num: int  1 2 str(d3) # classes ‘data.table’ , 'data.frame':    2 obs. of  2 variables: #   $ id : chr  "a" "b" #   $ num: int  1 2 #   - attr(*, ".internal.selfref")=<externalptr>  

if are using data.table, can skip list2env part:

library(data.table) d1 <- d2 <- d3 <- data.table(id = factor(c("a", "b")), num = 1:2) str(d1) # 'classes ‘data.table’ , 'data.frame':   2 obs. of  2 variables: #  $ id : factor w/ 2 levels "a","b": 1 2 #  $ num: int  1 2 #  - attr(*, ".internal.selfref")=<externalptr>   lapply(mget(c("d1","d2","d3")), function(x) x[, id := as.character(id)][]) str(d1) # classes ‘data.table’ , 'data.frame':    2 obs. of  2 variables: #   $ id : chr  "a" "b" #   $ num: int  1 2 #   - attr(*, ".internal.selfref")=<externalptr>  

Comments

Popular posts from this blog

apache - PHP Soap issue while content length is larger -

asynchronous - Python asyncio task got bad yield -

javascript - Complete OpenIDConnect auth when requesting via Ajax -