【发布时间】:2018-12-26 07:35:39
【问题描述】:
我有一个 Shell 脚本和一个 R 脚本都与 Perl 脚本链接。在 Perl 脚本中有用户定义路径,我也想将该路径用于 Shell 脚本和 R 脚本。需要进行哪些更改? 这是 Perl 脚本:
print "Enter the path to your input file:";
chomp(my $user_path = <STDIN>);
my $path = $user_path // $default_path; # $path is path for Perl script
print "The path we'll use is: $path";
........................
........
这是 R 脚本:
x <- read.table($path."/text.txt", header=F) # how to introduce $path as path for R script
library(plyr)
df <- ddply(x, .(x$V1,x$V2, x$V3), nrow)
..............
.............
($path) 适用于 Perl 脚本,但不适用于 R。我想在 R 和 Shell 脚本中调用 Perl 变量 ($path)。如何在 R 和 Shell 脚本中使用 $path 作为路径?
【问题讨论】:
-
您能解释一下 Perl 脚本、shell 脚本和 R 脚本是如何协同工作的吗? Perl 脚本是否调用 shell 脚本? Perl 脚本是否调用 R 脚本?最简单的方法是将
$path作为命令行参数传递给 shell 脚本和 R 脚本。 -
@Corion 有一个 Perl 脚本,它首先调用一个 shell 脚本,然后调用 R 脚本。
-
那么是什么阻止您将
$path传递给shell 脚本,然后从shell 脚本传递给R 脚本? -
我将路径保存在变量 $path 中(在 Perl 脚本中)。所以对于 Perl 脚本它可以正常工作,但是当 Shell 脚本或 R 脚本出现时,它无法检测到 $path,所以它会出错。请参阅 R 脚本中的编辑:所以,我不知道如何引入 $path 作为 Shell 脚本和 R 脚本的路径。
-
是的。脚本之间不共享变量。您需要明确地传递它们。在您的 Perl 代码中,您启动 shell 脚本。在那里,您必须将
$path变量作为参数传递,并且在shell 脚本中,您必须将其传递给R 脚本。也可以使用环境传值:$ENV{ MY_APP_PATH } = $path,然后在R中Sys.getenv(c("MY_APP_PATH"))