Il set di dati di seguito presenta le caratteristiche del mio set di dati di grandi dimensioni. Sto gestirlo in data.table, alcune colonne vengono caricati come chr nonostante sono numeri e voglio convertirli in valori numerici e questi nomi di colonna sono notiCome convertire il carattere in numerico all'interno di data.table per colonne specifiche?
dt = data.table(A=LETTERS[1:10],B=letters[1:10],C=as.character(runif(10)),D = as.character(runif(10))) # simplified version
strTmp = c('C','D') # Name of columns to be converted to numeric
# columns converted to numeric and returned a 10 x 2 data.table
dt.out1 <- dt[,lapply(.SD, as.numeric, na.rm = T), .SDcols = strTmp]
sono in grado di convertire quei 2 colonne a numerico con il codice sopra tuttavia voglio invece aggiornare dt. Ho provato a usare: = tuttavia non ha funzionato. Ho bisogno di aiuto qui!
dt.out2 <- dt[, strTmp:=lapply(.SD, as.numeric, na.rm = T), .SDcols = strTmp] # returned a 10 x 6 data.table (2 columns extra)
Ho anche provato il codice qui sotto (codificato come un data.frame - non la mia soluzione ideale, anche se funziona come io sono preoccupato, in alcuni casi, l'ordine potrebbe cambiare), ma ancora non funziona. Qualcuno può farmi sapere perché non funziona, per favore?
dt[,strTmp,with=F] <- dt[,lapply(.SD, as.numeric, na.rm = T), .SDcols = strTmp]
Grazie in anticipo!
Perché si usa NULL? – skan
@skan, consultare i documenti per 'set'. Il 'NULL' rappresenta l'applicazione a tutte le righe. – A5C1D2H2I1M1N2O1R2T1