Укажите путь в функции write.csv - PullRequest
0 голосов
/ 31 октября 2018

У меня простой вопрос синтаксиса: есть ли способ указать путь, по которому следует записать файл csv в самой функции .csv?

Я всегда делаю следующее:

setwd("C:/Users/user/Desktop")
write.csv(dt, "my_file.csv", row.names = F)

Однако я бы хотел пропустить строку setwd() и включить ее непосредственно в функцию write.csv(). Я не могу найти настройки пути в файле документации write.csv. Возможно ли сделать это исключительно в write.csv без использования write.table() или необходимости загружать какие-либо пакеты?

Я пишу около 300 .csv файлов в сценарии, который автоматически запускается каждый день. Цикл работает медленнее при использовании write.table(), чем при использовании write.csv(). Единственная причина, по которой я хочу включить путь в функцию write.csv(), состоит в том, чтобы посмотреть, смогу ли я сократить время, необходимое для дальнейшего выполнения.

Ответы [ 3 ]

0 голосов
/ 31 октября 2018

Другим способом может быть создание функции-оболочки вокруг функции write.csv и передача аргументов функции write.csv в функцию-оболочку.

write_csv_path <- function(dt,filename,sep,path){ write.csv(dt,paste0(path,filename,sep = sep)) }

Пример

write_csv_path(dt = mtcars,filename = "file.csv",sep = "",path = ".\\")

0 голосов
/ 31 октября 2018

Для этого есть специальная функция: file.path:

path <- "C:/Users/user/Desktop"
write.csv(dt, file.path(path, "my_file.csv"), row.names=FALSE)

Цитирование из ?file.path, его назначение:

Построение пути к файлу из компонентов независимым от платформы способом.

Некоторые из немногих вещей, которые он делает автоматически (а paste не делает):

  • Использование разделителя пути для конкретной платформы
  • Добавление разделителя пути между путем и именем файла (если его там еще нет)
0 голосов
/ 31 октября 2018

Я обычно устанавливаю свой «out» путь в начале, а затем просто использую paste(), чтобы создать полное имя файла для сохранения.

path_out = 'C:\\Users\\user\\Desktop\\'
fileName = paste(path_out, 'my_file.csv',sep = '')
write.csv(dt,fileName)

или все в пределах write.csv()

path_out = 'C:\\Users\\user\\Desktop\\'
write.csv(dt,paste(path_out,'my_file.csv',sep = ''))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...