php - PHP将数组传递给Rscript
问题描述
我有一个关于如何将 php 数组传递给 Rscript 的问题。在我的项目中,我需要使用 php 调用 Rscript 来运行 R 代码。但是我想将 php 数组作为 Rscript 中的参数传递。但是当我这样做时。php报错:数组到字符串的转换!。我不知道该怎么做。如果它可以成功传递参数。我仍然不知道如何读取R中的数组参数。有什么想法吗?提前致谢!这是一个例子:
#php file
<?php
$ck=["WT1","WT2"];
$tr=["Al1","Al2"];
exec("Rscript getdata.R $ck $tr");
# getdata.R
args <- commandArgs(TRUE)
ck <- args[1]
tr <- args[2]
ckk <- lapply(strsplit(ck,','),as.character)
trr <- lapply(strsplit(tr,','),as.character)
a <- as.dataframe(a=ckk,b=trr)
write.csv(a,file="test.csv")
解决方案
这似乎是转换$tr
和$ck
字符串的问题。由于缺乏 php 经验,我的经验基于其他语言和其他一些问题。
从终端/cmd 执行时,参数都应该是字符串。按照此处答案中的示例,您可能会使用类似于(未经测试!)
$ck=["WT1","WT2"];
$tr=["Al1","Al2"];
exec('Rscript getdata.R "' . implode(",", $ck) . '" "' . implode(",", $tr) . '"');
请注意,这会将输入作为 R 中的字符串返回,然后必须将其转换回向量。
推荐阅读
- ios - CarPlay:从 Spotify 等移动设备的后台杀死应用程序时,如何从 CarPlay 装置关闭应用程序?
- servicenow - 是否有直接的 service-now api 来运行 KB 文档的用户标准诊断?
- google-chrome - 如何通过鼠标的触摸事件启动 Chrome?
- macos - 以目录名称中的日期为条件循环目录中的文件(Mac os - zsh)
- java - Java,将大小相等的地图合并到地图列表中
- git - git rebase 的使用
- c# - 在 LINQ 查询的 Order 部分中调用方法
- javascript - 有没有办法使用 javascript 在 Chrome for iOS 上询问用户坐标?
- vba - 在 VBA 中处理属性内数据输入错误的最佳方法是什么?
- javascript - Facebook登录重定向网址#_=_在laravel社交名流中删除?