我有一个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作为路径?
答案 0 :(得分:0)
只需在您的system
或exec
ini perl上使用$ path作为参数。它将arg发送到shell脚本,然后将其用作Rscript
的arg。
例如,我有3个脚本。我们走了。
root@analist:~/test# cat file.pl
#!/usr/bin/perl
#Input file
print "[Perl] Enter file:";
chomp(my $filepath = <STDIN>);
#Send to bash script
my @cmd = ('./file.sh');
push @cmd, $filepath;
system(@cmd);
root@analist:~/test# cat file.sh
#!/bin/bash
echo "[Bash] Filename: $1"
Rscript file.R $1
root@analist:~/test# cat file.R
args <- commandArgs(TRUE)
fileTxt <- args[1]
cat(paste('[R] File:', fileTxt, '\n'))
root@analist:~/test# ./file.pl
[Perl] Enter file:test.txt
[Bash] Filename: test.txt
[R] File: test.txt
我希望这个答案能对您有所帮助。