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)
InformationsquelleAutor PaulHurleyuk | 2010-02-25
Schreibe einen Kommentar