Vorrei modificare un set di colonne in un data.table per essere fattori. Se conoscessi i nomi delle colonne in anticipo, penso che sarebbe semplice.Posso aggiornare a livello di codice il tipo di un insieme di colonne (in fattori) in data.table?
library(data.table)
dt1 <- data.table(a = (1:4), b = rep(c('a','b')), c = rep(c(0,1)))
dt1[,class(b)]
dt1[,b:=factor(b)]
dt1[,class(b)]
Ma non fare, e invece hanno un elenco dei nomi delle variabili
vars.factors <- c('b','c')
posso applicare la funzione di fattore di loro senza un problema ...
lapply(vars.factors, function(x) dt1[,class(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
Ma non so come riassegnare o aggiornare la colonna originale nella tabella dei dati.
Questo fallisce ...
lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
# Error in get(x) : invalid first argument
Come fa questo ...
lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
# Error in get(x) : object 'b' not found
NB. Ho provato la risposta proposta here senza fortuna.
ricerca di questo? dt2 = as.data.table (lapply (dt1, factor)) – KFB