Ich möchte eine Reihe von Spalten in einer data.table zu Faktoren ändern. Wenn ich die Namen der Spalten im Voraus wüsste, denke ich, dass das einfach wäre.Kann ich programmgesteuert den Typ einer Reihe von Spalten (zu Faktoren) in data.table aktualisieren?
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)]
Aber ich nicht, und haben stattdessen eine Liste der Variablennamen
vars.factors <- c('b','c')
ich den Faktor Funktion, um sie ohne Probleme anwenden können ...
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))])
Ich weiß jedoch nicht, wie ich die ursprüngliche Spalte in der Datentabelle neu zuweisen oder aktualisieren soll.
Dies scheitert ...
lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
# Error in get(x) : invalid first argument
Da dies tut ...
lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
# Error in get(x) : object 'b' not found
NB. Ich habe die Antwort here ohne Glück versucht.
für diese gesucht? dt2 = as.data.table (lapply (dt1, factor)) – KFB