Ошибка пути к файлу при указании выходного местоположения для write_dta

Я хотел бы программно указать местоположение моего экспорта при использовании write.dta. Мой рабочий каталог установлен в родительскую папку, а мой скрипт находится в дочерней папке с именем «Script». Я хочу, чтобы экспорт находился в дочерней папке с именем «Данные».

setwd("~/Dropbox/Files")
file_output <- "survey"
path_out <- "./Data"
write_dta(df, paste0(file_output,".dta"), path = path_out, version = 12)

Однако я продолжаю получать сообщение об ошибке, когда R пытается писать. Он говорит, что пытается записать в папку «Script» (где находится мой файл сценария), а не в нужную папку «Data».

Error: Failed to open '/Users/VancityPlanner/Dropbox/Files/Scripts' for writing

Если я укажу полный путь, я все равно получу одно и то же сообщение об ошибке, будь то дочерняя папка или сама родительская папка (рабочий каталог), поэтому я не думаю, что права на запись являются проблемой.

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

write_dta(df, paste0(file_output,".dta"), version = 12)

что произойдет, если вы укажете полный путь в аргументе path=?

Mike 17.03.2022 19:45

Похоже, проблема с разрешением на этом пути. Любой пользователь, запускающий R, должен иметь права на запись.

Parfait 17.03.2022 19:50

@Майк, я обновил свой пост. Указание полного пути (независимо от того, является ли это дочерней папкой или родительской папкой/рабочим каталогом) завершается с тем же сообщением об ошибке. Однако, если я вообще не указываю путь, он сохраняется в моем рабочем каталоге без проблем, но это не то место, где я хочу сохранить.

VancityPlanner 17.03.2022 20:02

какую ОС вы используете? можешь показать полный вд?

Mike 17.03.2022 20:37

@Mike macOS 10.15.7 Полный wd — «/Users/VancityPlanner/Dropbox/Files/». У меня нет проблем при использовании write.csv

VancityPlanner 17.03.2022 20:46

о, я думаю, вам просто нужно объединить ваши path_out и file_output в одну строку и передать ее аргументу file=

Mike 17.03.2022 20:59

@Mike Я пытался использовать write_dta(df, paste0(path_out, file_output,".dta"), version = 12), где я комбинирую path_out и file_output, но он просто записывает в рабочий каталог и включает path_out в имя файла. Как я должен форматировать код по-другому?

VancityPlanner 17.03.2022 23:13
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ниже я показываю, куда указывает мой рабочий каталог, а затем я изменяю путь, по которому я хочу сохранить документ, в операторе пути. Обратите внимание, что к нему добавлен путь к файлу G:/ и имя набора данных. У меня есть ПК, но нет причин, по которым это не должно работать на Mac.

library(haven)

getwd()  
#"C:/Users/myname/Documents"
write_dta(data = mtcars, path = "G:/mtcars.dta", version = 12)

Другие вопросы по теме