使用文件路径作为 system() 的参数来执行 C 代码

Using a file path as an argument to system() to execute C code

我有一些 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 将目录读取为 /。但是,C 中的 fopen 使用 \ 解释目录。有没有办法在 R 中使用 \,或者这是一个应该在 C 中解决的问题?

谢谢。

试一试这种格式: 基本上 capture.output 应该将 normalizePath 函数的 cat 结果以 'native' WINdows 路径格式推送到 system2 命令:

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

在这种情况下,pathToFile 可以保留在 'regular' R 路径格式中,即:"C:/Users/user/Documents/data.csv" 应该可以保留。