如何从同一个变量创建不同的文件?

时间:2019-03-08 15:51:54

标签: r

我解释我的问题。我想在我的数据集(数千行)上计算算法的可伸缩性。为此,我想对该数据集进行子集化并增加500行子集的大小(因此,第一子集500行,第二子集1000行,第三子集1500行...)。

我将使用Slurm和SLURM_ARRAY_TASK_ID函数来执行此操作。这是我的R代码:

# load packages 

library(SpiecEasi)
library(optparse)

args <- commandArgs(trailingOnly = F)

# get options
option_list = list(
  make_option(c("-s", "--subset"), type="character", default=NULL,
              help="Input file matrix ")
);


opt_parser = OptionParser(usage = "Usage: %prog -f [FILE]",option_list=option_list,
                          description= "Description:")
opt = parse_args(opt_parser)


# main code 
print('Load matrice')

data<-read.table("/home/vipailler/PROJET_M2/raw/truelength2.prok2.uniref2.rares.tsv", h=T, row.names=1, sep="\t")

print('Subset matrice')

data=data[1:opt$subset,]
#print(data)

print('Translate')
data=t(data)
#print(data)

se_gl <- spiec.easi(data, method='glasso', lambda.min.ratio=1e-2, nlambda=20)

size=format(object.size(se_gl), units="Gb")
print(size)
######!!!!######

save(se_gl, file="/home/vipailler/PROJET_M2/data/se_gl.RData")

我的问题是这个:如果我使用5个数组来计算spiec.easi算法的可伸缩性(因此,从500行到2500行),我希望它创建5个不同的se_gl变量。我的意思是,我的最后一个命令行将仅保存最后一个变量(2500行),并将覆盖其他四个变量。

那么,如何从同一个se_gl变量中创建5个不同的变量?我知道使用slurm,例如,该代码将执行5次(如果我设置了5个数组),但是问题是我的最后一个命令行...

有帮助吗?

最佳

1 个答案:

答案 0 :(得分:0)

您有几种选择。既然提到了slurm,您可能只想修改文件名以保留可扩展的解决方案。

save(se_gl, file = sprintf("/home/vipailler/PROJET_M2/data/se_gl_%s.RData", opt$subset))