Gibt es einen besseren Weg, um code in diesem sqlQuery in R?
Ich Schreibe ein R-script, um einige Daten in der Datenbank und dann tun Sie Dinge, über die RODBC Paket. Derzeit sind alle meine sqlQuery-Befehle sind eine lange Zeichenfolge;
stsample<-sqlQuery(odcon, paste"select * from bob.DESIGNSAMPLE T1, bob.DESIGNSUBJECTGROUP T2, bob.DESIGNEVENT T3, bob.CONFIGSAMPLETYPES T4 WHERE T1.SUBJECTGROUPID = T2.SUBJECTGROUPID AND T1.TREATMENTEVENTID = T3.TREATMENTEVENTID AND T1.SAMPLETYPEKEY = T4.SAMPLETYPEKEY AND T1.STUDYID = T2.STUDYID AND T1.STUDYID = T3.STUDYID AND T1.STUDYID = ", chstudid, sep=""))
head(stsample)
die sieht hässlich und schwer zu Lesen/aktualisieren. Ich habe versucht, indem Sie multiline, dann aber neue-Zeile-Zeichen in die Quere kommen, derzeit meine beste ist das mit viel paste ist;
stsample<-sqlQuery(odcon,
paste(
"select ",
"* ",
"from ",
"BOB.DESIGNSAMPLE T1, ",
"BOB.DESIGNSUBJECTGROUP T2, ",
"BOB.DESIGNEVENT T3, ",
"BOB.CONFIGSAMPLETYPES T4 ",
"WHERE ",
"T1.SUBJECTGROUPID = T2.SUBJECTGROUPID ",
"AND T1.TREATMENTEVENTID = T3.TREATMENTEVENTID ",
"AND T1.SAMPLETYPEKEY = T4.SAMPLETYPEKEY ",
"AND T1.STUDYID = T2.STUDYID ",
"AND T1.STUDYID = T3.STUDYID ",
"AND T1.STUDYID = ",chstudid,
sep="")
)
head(stsample)
Aber ich mag es nicht zu setzen Sie Anführungszeichen um everyline, und immer meine Leerzeichen korrekt. Gibt es einen besseren Weg ?
- Werfen Sie einen Blick auf stackoverflow.com/questions/1630724/...
- Diese Frage und die einem Marek-links zu beiden weisen auf Probleme mit der neuen Linie chars. Ich benutze die paste syntax wie gd047 verwendet in seiner Antwort unten und haben keine Probleme mit neue-Zeile-Zeichen. Ich habe die syntax mit SQL-Server und Oracle. Welche Datenbank ist, geben Sie Trauer über das neue line-syntax?
- Ich habe keine Fehler infolge von newlines, ich hatte einfach ein schlechtes Gefühl über Sie, aber vielleicht ist das me falsch... (die db ist oracle, wenn es darauf ankommt)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde so etwas wie dieses:
Was über die Verwendung von gsub("\n", " ", "lange mehrzeilige Zeichenfolge auswählen") anstelle von einfügen?
Dies ist eine wirklich alte Frage, aber dachte, dass dies kann nützlich sein, um jemanden.
Eine Sache, die ich nützlich gefunden haben ist die GetoptLong - Paket, das die qq () - Funktion. Ich denke, es ist inspiriert von Perl, aber im wesentlichen bietet es eine Möglichkeit zu tun, ein multiline-string mit einfach-variable interpolation. Zum Beispiel:
Natürlich sollte ich erwähnen, die übliche Einschränkung, dass dies eine schlechte Idee ist, wenn Sie arbeiten direkt mit dem Benutzer-input und es wäre besser, verwenden irgendeine Art von vorbereitete Erklärung in diesem Fall.