使用R通过命令行参数运行Python

时间:2015-12-03 21:26:30

标签: python r

我正在尝试使用R来运行Python脚本。我正在创建一个调用我的Python脚本的R脚本。我需要从命令提示符执行此操作,并以整数形式传递3个参数(纬度,经度和年份)。下面是我的R脚本:

args <- commandArgs(trailingOnly = TRUE)
lat_desired = args[1]
lon_desired = args[2]
year_desired = args[3]
system('/home/ "import sys; sys.stdout.write(file(\'python_file\', \'r\').read());"; python python_file lat_desired, lon_desired, year_desired')

我的python脚本读取lat_desired / lon_desired / year_desired参数并将它们转换为整数(如下所示):

line4 > lat_desired = int(sys.argv[1])
line5 > lon_desired = int(sys.argv[2])
line6 > year_desired = int(sys.argv[3])

当我在命令提示符中运行所有这些时,我得到这个:错误:对于带有基数10的int()的文字无效。关于如何将命令行参数从我的R脚本传递到我的Python脚本的任何想法?

1 个答案:

答案 0 :(得分:1)

system()中,您传递的字符串为“lat_desired”,“lon_desired”和“year_desired”。在将所有这些传递到system()之前,您需要进行一些文本处理。你也可以把它变得更紧凑。

args <- commandArgs(trailingOnly = TRUE)
command <- sprintf(
    '/home/ "import sys; sys.stdout.write(file(\'python_file\', \'r\').read());"; python python_file %s, %s, %s',
    args[1], args[2], args[3])
system(command)

另外,如果您要继续在R中使用它们,您可以将它们转换为R中的整数。

args <- as.integer(commandArgs(trailingOnly = TRUE))