Как вызвать переменную Perl в скрипте R и Shell? - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть сценарий оболочки и сценарий 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. Я хочу вызвать переменную Perl ($ path) в R и сценарии Shell. Как использовать $ path в качестве пути в R и в сценарии Shell?

1 Ответ

0 голосов
/ 28 декабря 2018

Просто используйте $ path в качестве аргумента для вашего system или exec ini perl.Он отправит arg в скрипт оболочки, а затем использует его как arg для Rscript.

Например, у меня есть 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

Надеюсь, этот ответ поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...