如何把R中system调用Python脚本的输出结果存入R对象?
在R中捕获Python脚本的输出结果
你的问题出在两个地方:一是错误使用了readline()函数(它用于读取用户手动输入,而非捕获系统命令的输出);二是默认调用system()时,命令的输出只会打印到控制台,不会返回给R对象。
以下是两种可行的解决方法:
方法一:使用system()的intern=TRUE参数
通过设置intern=TRUE,可以让system()把命令的输出以字符向量的形式返回,之后再转换为数值类型即可:
# 注意替换为正确的Python脚本路径和参数 xx <- system("python ./myScript.py 3 4", intern = TRUE) # 将字符结果转为整数 xx <- as.integer(xx)
方法二:使用system2()函数(更推荐)
system2()的参数设计更清晰,通过stdout=TRUE指定捕获标准输出:
xx <- system2("python", args = c("./myScript.py", "3", "4"), stdout = TRUE) xx <- as.integer(xx)
额外注意事项
- 确保Python命令的正确性:如果你的环境中需要用
python3而非python,替换掉对应命令即可; - 检查脚本路径:确认
./myScript.py或../my_pythonScript.py的路径与实际文件位置匹配,避免因路径错误导致无法执行脚本; - 输出转换:因为捕获到的输出是字符类型,需要用
as.integer()或as.numeric()转换为数值,才能进行后续数值运算。
内容的提问来源于stack exchange,提问作者user3236841
相关产品推荐
相关产品推荐

