Ich bin eine Reihe von Dateien erstellen. Ich habe eine Liste mit zwei Buchstaben. Jede Datei enthält eine Spalte mit demselben Namen wie die Datei. Ich mache ihnen eine Reihe von Dingen, indem ich sowohl die Datei als auch die Spalte mit dem Namen identifiziere, der in einer Variablen, sT, enthalten ist. Zum Beispiel habe ich eine Datei namens OH, und sT enthält "OH".R: Mit dplyr entfernen Sie eine Spalte in einer Zeichenfolge in einer Variablen,
Die letzte Sache, die ich mit der Datei machen möchte, ist die gleichnamige Spalte zu entfernen und eine Datei mit dem gleichen Namen zurückgeben. Ich versuche, fließend zu werden ordentlich, Sprache der Ordyverse, also versuche ich, dies mit Auswahl zu tun.
OH <- data.frame(X=1:2, OH=3:4)
Ich denke, das unter Nicht-Standard-Auswertung funktionieren sollte:
assign(sT, select(get(eval(sT)), -as.symbol(get(sT)))
wo sT "OH" und erhalten (eval (sT)) OH ist die Datei. Und ich denke, eine davon sollte funktionieren, unter Standardauswertung:
assign(sT, select(get(eval(sT)), - sT))
oder
assign(sT, select_(get(eval(sT)), paste0("-", sT)))
je nachdem, ob select_
das Minuszeichen innerhalb der Zeichenfolge akzeptieren. Aber keiner von ihnen tun, Rückkehr jeweils:
Error in -as.symbol(sT) : invalid argument to unary operator
Error in eval(expr, envir, enclos) : object 'OH' not found
Error in eval(expr, envir, enclos) : object 'OH' not found
Sie benötigen die SE-Version verwenden: 'get (sT)%>% SELECT_ (Paste ('-', sT)) 'All die' assign' und 'eval' lassen mich denken, dass es einen besseren Weg gibt, sich deinem größeren Ziel zu nähern. – alistaire
Oder mit Zuweisung, 'assign (sT, get (sT)%>% select_ (einfügen ('-', sT)))) (Zuweisung scheint nicht gut zu pipettieren). – alistaire
Ich denke, dass dies für eine benannte "Liste" mit jedem Ihrer Datensätze schreien, aber ich bin mir nicht sicher, was genau Ihr größeres Ziel ist. Es gibt nichts "Ordentliches", wenn man 'get'' assign' usw. auf freischwebenden 'data.frames' verwendet und dann eine ganz andere Komplexitätsebene hinzufügt, indem man es durch eine Pipe führt. Ich habe die Besorgnis von @alistaire zum Ausdruck gebracht, dass Sie diese Strategie wahrscheinlich überhaupt nicht anwenden sollten. – thelatemail