Ich möchte eine Regression innerhalb einer data.table
ausführen. Die formula
muss dynamisch erstellt werden. Ich habe die folgende Methode versucht:Erstellen Sie eine Formel in einer data.table-Umgebung in R
x = data.table(a=1:20, b=20:1, id=1:5)
> x[,as.list(coef(lm(as.formula("a ~ b")))),by=id]
Error in eval(expr, envir, enclos) : object 'a' not found
Wie man die Umwelt nicht angeben, dass der Ist-data.table zu sein, wo die Auswertung erfolgt?
EDIT: Ich weiß, ich kann lm (a ~ b) tun. Ich brauche die Formel, um dynamisch zu sein, also wird sie als Zeichenkette aufgebaut. Durch die dynamische meine ich die Formel paste0(var_1, "~", var_2)
sein kann, wo var_1 = a
und var_2 = b
Hier ist eine Lösung, dachte ich denke, wir tun können, besser:
txt = parse(text="as.list(coef(lm(a ~ b)))")
> x[,eval(txt),by=id]
id (Intercept) b
1: 1 21 -1
2: 2 21 -1
3: 3 21 -1
4: 4 21 -1
5: 5 21 -1
ich denke, das nur ein Duplikat http://stackoverflow.com/questions/14721592/r-dynamically-build-list-in-data-table-or-ddply/14721921#14721921 ist . Ich stimme noch nicht zu, zu schließen, weil ich denke, dass Sie besser erklären und illustrieren müssen, was Sie mit "dynamisch bauen" meinen. –
wird durchlesen, habe das nicht gesehen, aber ich glaube nicht, dass es ein Duplikat ist. insbesondere wie bekommt man die Umgebung in der eigentlichen data.table in den Griff? – Alex