studio - spss datei in r einlesen




Verwenden von R zum Kopieren von Dateien (2)

Sie können

  • Verwenden Sie system() , um einen Befehl wie bei der Shell auszuführen, einschließlich globbing
  • Verwenden Sie list.files() aka dir() , um die passende Datei globbing / reg.exp zu erstellen und die Dateien einzeln zu kopieren
  • Verwenden Sie file.copy für einzelne Dateien, wie in der Antwort von mjv gezeigt

Als Teil einer größeren Aufgabe, die in R unter Windows ausgeführt wird, möchte ich ausgewählte Dateien zwischen Verzeichnissen kopieren. Ist es möglich, innerhalb von R einen Befehl wie cp patha/filea*.csv pathb (beachten Sie den Platzhalter, für zusätzliche Würze)?


Ich glaube nicht, dass es einen direkten Weg gibt (scheu vor dem Beschuss), aber etwas wie das Folgende funktioniert normalerweise für mich.

flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")

Anmerkungen:

  • Ich habe absichtlich in zwei Schritten zerlegt, sie können kombiniert werden.
  • Siehe den regulären Ausdruck: R verwendet True Regex und trennt das Dateimuster in zwei separaten Argumenten vom Pfad.
  • notieren Sie die ^ und $ (Anfang / Ende der Zeichenkette) in der Regex - dies ist ein gewöhnliches gotcha, da diese implizit sind für Wildcard-Muster, aber mit Regexes erforderlich (damit einige Dateinamen nicht mit dem Platzhaltermuster übereinstimmen, sondern auch starten und / oder enden mit zusätzlichem Text, der auch ausgewählt wird).
  • In der Windows-Welt fügen Personen in der Regel ignore.case = TRUE Argument ignore.case = TRUE list.files , um zu emulieren, dass bei Verzeichnissuchen die Groß- / Kleinschreibung bei diesem Betriebssystem nicht list.files wird.
  • Die glob2rx() Funktion von R bietet eine bequeme Möglichkeit, Platzhaltermuster in reguläre Ausdrücke umzuwandeln. Zum Beispiel gibt fpattern = glob2rx('filea*.csv') eine andere, aber äquivalente Regex zurück.




copy