简体   繁体   中英

How to convert all factor variables into numeric variables (in multiple data frames at once)?

I have n data frames, each corresponding to data from a city.

There are 3 variables per data frame and currently they are all factor variables.

I want to transform all of them into numeric variables.

I have started by creating a vector with the names of all the data frames in order to use in a for loop.


cities <- as.vector(objects())


for ( i in cities){

i <-  as.data.frame(lapply(i, function(x) as.numeric(levels(x))[x]))

}


Although the code runs and there I get no error code, I don't see any changes to my data frames as all three variables remain factor variables.

The strangest thing is that when doing them one by one (as below) it works:


df <- as.data.frame(lapply(df, function(x) as.numeric(levels(x))[x]))

What you're essentially trying to do is modify the type of the field if it is a factor (to a numeric type). One approach using purrr would be:

library(purrr)

map(cities, ~ modify_if(., is.factor, as.numeric))

Note that modify() in itself is like lapply() but it doesn't change the underlying data structure of the objects you are modifying (in this case, dataframes). modify_if() simply takes a predicate as an additional argument.

for anyone who's interested in my question, I worked out the answer:


for ( i in cities){ 

  assign(i, as.data.frame(lapply(get(i), function(x) as.numeric(levels(x))[x]))) 

  }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM