使用文件路径作为 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"
应该可以保留。
我有一些 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"
应该可以保留。