r中两个代码和两个函数的循环

r中两个代码和两个函数的循环,r,R,我有两个代码要为我所有的样本做 cr1 = MEDIPS.seqCoverage(file = "1.bam", pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq) MEDIPS.plotSeqCoverage(seqCoverageObj=cr1, type="pie", cov.level = c(0, 5, 10, 20, 30), main="cr1") 那么 我不想一次又一

我有两个代码要为我所有的样本做

cr1 = MEDIPS.seqCoverage(file = "1.bam", pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)
MEDIPS.plotSeqCoverage(seqCoverageObj=cr1, type="pie", cov.level = c(0, 5, 10, 20, 30), main="cr1")
那么

我不想一次又一次地重复代码100次。我尝试了一些for循环,但它们不起作用,因为“在中找不到文件I.bam…”。嗯,我一点也不擅长。有人能帮我吗

因此,我的代码如下所示:

for(i in 1:100){
  cr[i] = MEDIPS.seqCoverage(file = paste0(as.character(i),".bam"),
                             pattern = "CG", BSgenome = BSgenome, extend = extend, 
                             shift = shift, uniq = uniq)
  MEDIPS.plotSeqCoverage(seqCoverageObj=cr[i], type="pie", 
                         cov.level = c(0, 5, 10, 20, 30), main="cr",paste0(as.character(i)))
}
读取bam对齐1.bam

导入的短读取总数:17254741

扩展读取

正在创建GRange对象

在同一基因组位置最多保留一个1读映射

剩余读取次数:11148075

正在加载BSgenome.Hsapiens.UCSC.hg19的染色体长度

获取基因组序列模式位置

已识别CG图案的数量:26752702

正在计算序列模式覆盖率


错误:找不到对象“cr”

请确保您的工作目录设置正确。“未在…中找到文件i.bam”表示该文件不在您当前所在的目录中

getwd()
将显示您当前所在的目录。如果文件在下载中,您可以使用

setwd()
将目录更改为下载以访问文件

根据评论更新

for(i in 1:100){
cr[i] = MEDIPS.seqCoverage(file = cat(paste0(as.character(i),".bam")),
pattern = "CG", BSgenome = BSgenome, extend = extend, 
shift = shift, uniq = uniq)

MEDIPS.plotSeqCoverage(seqCoverageObj=cr[i], type="pie", 
cov.level = c(0, 5, 10, 20, 30), main=cr[i])
}

我不确定这是否是您正在关注的事情,但您仍然可以尝试,其中类似操作的数量假设为100,即

list2env(setNames(lapply(paste0(seq(100),".bam"),
                         function(v) MEDIPS.seqCoverage(file = v, pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)),
                  paste0("cr",seq(100))),
         envir = .GlobalEnv)

sapply(paste0("cr",seq(100)),function(v) MEDIPS.plotSeqCoverage(seqCoverageObj=get(v), type="pie", cov.level = c(0, 5, 10, 20, 30), main=v))

你的环到底是什么样子的?如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,则更容易为您提供帮助。对于示例#1,我需要cr1作为向量,“1.bam”作为bam文件,“cr1”作为绘图的主标题。对于样本#2,我需要cr2、“2.bam”、“cr2”etc@JinyongHuang ... 如果您向我们展示您运行的文字代码,那么就容易多了。不要只是描述它。准确地向我们展示您尝试的内容。是否需要循环后的所有
cr1
cr2
、对象?或者,您只是使用绘图工具,然后就不再需要它们了。如果您打算保留这些变量,那么将它们存储在一个列表中比在您的全局环境中存储100个单独的变量更容易。@MrFlick ThomasIsCoding的答案解决了我的问题。无论如何,谢谢你。我已经正确设置了工作目录。我的代码一定是出了什么问题,找不到我的文件。明白了,我想我一开始读错了。在for循环中,尝试以下操作:
file=cat(paste0(as.character(i),“.bam”)
。您不希望
cat()
在其中。
cat()
将返回NULL。
paste0()
应该足以构建字符串。MEDIPS.seqCoverage中的错误(file=cat(paste0(as.character(i),“.bam”))必须指定BAM或TXT文件。MILTPS中的错误。PLOTSESEQULL(SEQCUREAGOBOR= CR[i],type =“PUE”):对象“CR”不是“发现”!它正好符合我想要的。非常感谢!“金永皇太好了!如果您认为我的答案是有用的,请考虑接受/接受它,谢谢!
list2env(setNames(lapply(paste0(seq(100),".bam"),
                         function(v) MEDIPS.seqCoverage(file = v, pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)),
                  paste0("cr",seq(100))),
         envir = .GlobalEnv)

sapply(paste0("cr",seq(100)),function(v) MEDIPS.plotSeqCoverage(seqCoverageObj=get(v), type="pie", cov.level = c(0, 5, 10, 20, 30), main=v))