Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何将数组作为参数传递给R脚本命令行运行?_Arrays_R_Command Line_Arguments - Fatal编程技术网

Arrays 如何将数组作为参数传递给R脚本命令行运行?

Arrays 如何将数组作为参数传递给R脚本命令行运行?,arrays,r,command-line,arguments,Arrays,R,Command Line,Arguments,我试图通过Windows中的命令行将数百个元素的数组作为R脚本的参数传递。首先,我想以某种方式声明我的数组。我在命令行中这样做: set my_array=c(0,1,2,3,4,5,6,7,8,9,...,700) 然后我想运行我的脚本并获取数组作为参数 Rscript my_script my_array 但是当我尝试此操作时,出现了一条错误消息,说找不到“对象my_array”。我知道如何使用args获取脚本中的参数。我想我理解您在这里尝试的操作,如果我错了,请告诉我 我创建了一个R脚

我试图通过Windows中的命令行将数百个元素的数组作为R脚本的参数传递。首先,我想以某种方式声明我的数组。我在命令行中这样做:

set my_array=c(0,1,2,3,4,5,6,7,8,9,...,700)
然后我想运行我的脚本并获取数组作为参数

Rscript my_script my_array

但是当我尝试此操作时,出现了一条错误消息,说找不到“对象my_array”。我知道如何使用
args获取脚本中的参数。我想我理解您在这里尝试的操作,如果我错了,请告诉我

我创建了一个R脚本(称为script.R),其中包含以下内容:

args <- commandArgs(TRUE)
eval(parse(text=args[1]))
print(myarray)

如您所见,参数被传递(在您的脚本中,您可以使用print(args)来查看传递的内容和方式),我使用eval(parse(text=…))使其执行(在脚本中创建myarray),然后我可以用它做我想做的事情(在我的例子中,我打印了它,但您可以做分析或其他事情)。这有帮助吗?

首先,我不确定您是否应该使用
set
在终端中声明任何变量,但您可以在
man set
页面上看到更多信息

我认为有一些方法可以尝试将数组传递给R脚本,这主要取决于如何在终端中声明
my_数组


1-“我的数组”可以是bash中的字符串:

$ my_array="c(0,1,2,3,4)"
$ Rscript my_script ${my_array}
$ my_array=(0,1,2,3,4)
$ Rscript my_script ${my_array[*]}
并使用R脚本中的
eval(parse(text=())
将参数作为向量转换为R环境

args <- commandArgs(trailingOnly=TRUE) 
print(args)
# c(0,1,2,3,4,5,6,7,8,9)

args <- eval(parse(text=args[1]))
print(args)
# [1] 0 1 2 3 4 5 6 7 8 9
在R中,
args
已经是您的数组,但类型为character:

args <- commandArgs(trailingOnly=TRUE) 
print(args)
# [1] "0" "1" "2" "3" "4" "5"

args如果数组中有数百个值,那么将其写入文本文件并将文件路径作为参数传递,然后让R读入可能更有用。

谢谢,Joy!但我的问题是,我必须传递数百个元素的多个数组。因此,如果我在同一命令行中声明数组,就像在
Rscript脚本中一样.R myarray=“c(1,3,4)”
我无法声明我需要的所有内容。
args <- commandArgs(trailingOnly=TRUE) 
print(args)
# [1] "0" "1" "2" "3" "4" "5"