首页 > 解决方案 > 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")

标签: phprrscript

解决方案


这似乎是转换$tr$ck字符串的问题。由于缺乏 php 经验,我的经验基于其他语言和其他一些问题。

从终端/cmd 执行时,参数都应该是字符串。按照此处答案中的示例,您可能会使用类似于(未经测试!)

$ck=["WT1","WT2"];
$tr=["Al1","Al2"];
exec('Rscript getdata.R "' . implode(",", $ck) . '" "' . implode(",", $tr) . '"');

请注意,这会将输入作为 R 中的字符串返回,然后必须将其转换回向量。


推荐阅读