【发布时间】:2018-08-06 18:08:47
【问题描述】:
我有一个 R 脚本,我想在其中调用 Java 代码中的参数。参数是csv file name 文件名和unique ID,它必须用于命名两个输出文件。
我的 R 脚本是:
df1 <- read.csv("filename.csv")
vs=colnames(df1)
md=formula(paste(vs[3],"~",vs[1],"+",vs[2]))
fit <- summary(aov(md, data=df1))[[1]]
#text output
names(fit)[1:4]=c("DF","SS","MS","F")
sink("test.txt")
在此代码中,第一行 df1 <- read.csv("filename.csv") 应该从 JAVA code 动态获取文件名,最后一行 sink("test.txt") 应该使用 unique ID 并创建输出文件。
java代码是:
buildCommand.add("Rscript ");
buildCommand.add(scriptName);
buildCommand.add(inputFileWithPathExtension);
buildCommand.add(uniqueIdForR);
我见过其他post,但我不确定它是否对我的情况有所帮助,还有类似的帖子谈论rJava package`,但没有清楚的想法。
任何帮助将不胜感激。提前致谢!
【问题讨论】:
-
一旦你确定最终的系统命令看起来像
Rscript scriptName inputFile uniqueId,你只需要处理R中的命令行参数,这不是Java特定的。 -
@RalfStubner 我是新手,所以应该是这样的
args <- commandArgs(TRUE)input <- read.csv(args[1])。 -
是的,看起来正确。
-
@RalfStubner 我应该如何使用在 java 代码中作为参数传递的唯一 ID 来命名 R 中的输出文件。是否应该将其添加为另一个参数,如
unique_Id <- as.integer(args[2])