Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.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
如何将CONDOR的队列号输入到您的CONDOR作业中_R_Process_Queue_Condor - Fatal编程技术网

如何将CONDOR的队列号输入到您的CONDOR作业中

如何将CONDOR的队列号输入到您的CONDOR作业中,r,process,queue,condor,R,Process,Queue,Condor,我想我有一个简单的问题,因为我在网上上下搜索,找不到其他人问这个问题: 我的大学有一个秃鹰学校。我想对同一代码重复运行几次(例如100次)。我的R代码有一个将结果存储在文件中的例程,即: write.csv(res, file=paste(paste(paste(format(Sys.time(), '%y%m%d'),'res', queue, sep="_"), sep='/'),'.csv',sep='',collapse='')) res是我的结果(一个data.frame),我指出这

我想我有一个简单的问题,因为我在网上上下搜索,找不到其他人问这个问题: 我的大学有一个秃鹰学校。我想对同一代码重复运行几次(例如100次)。我的R代码有一个将结果存储在文件中的例程,即:

write.csv(res, file=paste(paste(paste(format(Sys.time(), '%y%m%d'),'res', queue, sep="_"), sep='/'),'.csv',sep='',collapse=''))
res是我的结果(一个data.frame),我指出这个文件包含带有“res”的结果,最后我想添加这个计算的队列号(否则文件会被替换,不是吗?)。它应该看起来像:140109_res_1.csv,140109_res_2.csv

我向condor提交的文件如下所示:

universe = vanilla
executable = /usr/bin/R 
arguments =  --vanilla 
log =  testR.log
error = testR.err
input = run_condor.r
output = testR$(Process).txt
requirements = (opsys == "LINUX") && (arch == "X86_64") && (HAS_R_2_13 =?= True)
request_memory = 1000
should_transfer_files = YES
transfer_executable = FALSE
when_to_transfer_output = ON_EXIT
queue 3
我想知道如何将“队列”号输入我的R代码?我尝试了一个简单的例子

print(queue)
print(Queue)
但找不到名为queue或queue的对象。有什么建议吗? 最美好的祝福,
马可

好的,我解决了这个问题。事情是这样的:

  • 我不得不更改我的提交文件。我将插槽参数更改为:

    参数=--vanilla--args$(进程)

  • 现在,进程号被转发到R代码。在这里,您可以使用以下行检索它。该值将存储为字符。因此,您应该将其转换为数值(还要检查像10这样的数字是否作为“1”和“0”传递,在这种情况下,您还应该折叠这些值)

    快跑 [1] "0" >班级(跑步) [1] “角色” >try(如.numeric(运行)) [1] 0 >try(运行try(打印(运行)) [1] 0 >尝试(写入(运行,粘贴(运行,'csv',sep='.')) 您还可以在此处找到如何将变量/参数传递给代码的信息:

    我希望这对任何人都有帮助。 干杯并感谢所有其他评论者!
    Marco

    如果是for循环,如何重复代码,然后在名称中添加
    i
    。我使用的另一个选项是将时间添加到文件名中,这样我就知道哪个是在哪个之前创建的(尽管它在文件的属性中)我得到了不同的文件没有被覆盖。好吧,也许我的想法是错误的。我有一个内部循环和所有内容的计算(不能是子集),我想重复这个计算N次。因此,我想我应该告诉condor在N台机器上执行这个计算(使用
    队列N
    ).这是错误的方式吗?对不起,我想我误解了这个问题,代码是关于
    condor
    而不是R的,尽管它运行一个R程序。关于它,我忍不住也对从另一种语言到R的输入感兴趣…啊,是的,对不起。我更改了问题的标题,让它更明显。无论如何,谢谢。我对condor eit没有任何想法但将参数传递到R脚本通常很简单。也许这有助于:
    > run <- commandArgs(TRUE)
    > run
    [1] "0"
    > class(run)
    [1] "character"
    > try(as.numeric(run))
    [1] 0
    > try(run <- as.numeric(paste(run, collapse='')) )
    > try(print(run))
    [1] 0
    > try(write(run, paste(run,'csv', sep='.')))