Использование пути к файлу в качестве аргумента для system () для выполнения кода C - PullRequest
1 голос
/ 08 июля 2019

У меня есть некоторый C-код, который преобразует некоторые данные в другой формат.Моя цель состоит в том, чтобы пользователь R вводил путь к файлу, а затем запускал исполняемый файл (полученный из кода C).У меня были некоторые проблемы с этим как бы то ни было.Кажется, он неправильно читает путь к файлу.Translator принимает один аргумент: путь к файлу в виде, показанном ниже.

Мой код: system("Translator C:\\Users\\user\\Documents\\data.csv")

Запуск этого кода приводит к ошибке в моем коде C File not read.Я запускал исполняемый файл напрямую, и он работал просто отлично, так что это не проблема с моим C-кодом, но как я его называю в R.

Я пробовал несколько различных вариантов приведенного выше кода, таких как

system2("Translator", args = "C:\\Users\\user\\Documents\\data.csv")

system(paste("Translator C:\\Users\\user\\Documents\\data.csv, collapse = " "))

Однако они не принесли успеха.Я считаю, что проблема связана с тем фактом, что R не читает путь так, как я хочу, из-за \\.R читает каталоги как / Я верю.Однако fopen в C интерпретирует каталог, используя \.Есть ли способ использовать \ в R, или это проблема, которая должна быть решена в C?

Спасибо.

1 Ответ

1 голос
/ 08 июля 2019

Дайте этому формату снимок: В основном capture.output должен передать результат cat функции normalizePath в «родном» формате пути WINdows в команду system2:

system2( command = "Translator", args = capture.output( cat(normalizePath(pathToFile)) ) )

в этом случае pathToFile можно сохранить в «обычном» формате R-пути, то есть: "C:/Users/user/Documents/data.csv" должно быть возможно сохранить.

...