Как читать в файле с динамическим именем, избегая жесткого кодирования в R? - PullRequest
0 голосов
/ 01 октября 2019

Я сталкиваюсь с проблемами чтения в файлах csv с динамическими именами и , избегая жесткого кодирования пути к файлу. Я хотел бы короткий аккуратный код (без жесткого кода). Если я жестко закодирую полный путь (все до "~"), он хорошо читается в файлах. Но софт-кодирование (если это противоположно жесткому кодированию) путь к файлу дает ошибку (несмотря на отображение правильного пути в ошибке. У меня есть две переменные части имени файла, которые я вставляю в имя файла перед его чтениемв. Если я избегаю вставки и просто набираю путь для отдельного человека, это также работает.

#dynamic part I usually have in a loop with all the options. 
part_a <- "outside" #other options here in my loop include "inside"
part_b <- "late" # other option "early" or "preterm"

#reading in the df
df <-read.csv(paste0("~/Data/FromR/clean_",part_a,part_b,"_2016.csv"),
                           check.names=FALSE, na.strings="null")

Error in file(file, "rt") : cannot open the connection
    In addition: Warning message:
    In file(file, "rt") :
      cannot open file 'C:/Users/myname/Documents/Data/FromR/clean_outsidelate_2016.csv': No such file or directory

, если я использую getwd() в первой части вставки вместо ~, как предложено здесь он работает, производя эту строку "C:/Users/myname/Documents/MyR_Projects/Specific_R_project/" в начале вставки, но как мне заставить его работать с "~"? При использовании ~ он останавливается в папке "Documents" .. .

Желаемым результатом является чтение в файле без ошибок, выполнение функций и повторение с другими файлами. Мой цикл прекрасно работает жестко, и я только хотел сделать его более общим или мягким.

1 Ответ

0 голосов
/ 01 октября 2019

Я только что попытался прочитать файл (testFile.txt) у себя дома из другого wd, и он прекрасно работает с ~

 myFile <- "testFile
 mymy <- ".txt"
 ciao <- read.delim(paste0("~/",myFile,mymy))

В powershell вы можете использовать %~% (посмотрите здесь шаг ), но я не уверен, как расширить $HOME в R.

#-------- edit

Смотрите здесь и здесь . По сути, любая переменная, определенная в вашем .Renviron, должна быть доступна.

...