1

这是一个非常初学者的问题,所以提前感谢。

我得到了一个 R 脚本,用于将 fastq 文件与基因组对齐。我需要做的就是将此 R 脚本发送到我的 uni 集群,但我想确保脚本在我自己的计算机上运行良好,然后再将其发送到 void。我试图了解为什么我的函数无法运行。它首先加载一个库,然后将其余操作包含在一个函数中。当我 cmd+enter 函数时,它只在控制台中返回蓝色文本,但实际上并没有运行任何东西。因此,我假设如果发送到集群它也不会做任何事情。但为什么?

例如,如果我想运行名为“buildindex”的第一部分,我需要手动激活它。但是,如果仅通过函数调用它,则不会发生任何事情。请帮助我了解我需要解决的问题。这段代码是由一位忙于帮助我解决这些问题的博士后给我的。

library(Rsubread)

analyzeRNASeq <- function(){
  
  buildindex(basename="/Users/iRebecca/Box/BEC_FILES/GENOMES/GC_", reference="/Users/iRebecca/Box/BEC_FILES/GENOMES/GCF_000006845.1_ASM684v1_genomic.fna.gz")
  
  filePath <- "/Users/iRebecca/Box/BEC_FILES/GENOMES/file_list.csv"
  fileNames <- read.table(filePath, header=TRUE, sep=",", quote="", stringsAsFactors=FALSE, comment="")
  for(n in (1:nrow(fileNames))){

    align(index="/Users/iRebecca/Box/BEC_FILES/GENOMES/GC_",
      readfile1=fileNames[n,1],
      readfile2=fileNames[n,2],
      output_file=fileNames[n,3])

  outputData <- featureCounts(files=fileNames[n,3],annot.ext="/Users/iRebecca/Box/BEC_FILES/GENOMES/GCF_000006845.1_ASM684v1_genomic.gff.gz",
               isGTFAnnotationFile=TRUE,GTF.featureType="CDS",GTF.attrType="locus_tag")
  outputFilePath <- fileNames[n,4]
  write.table(outputData[1], file=outputFilePath, quote=FALSE, sep=",")
  }
}

这是我在 cmd+输入“analyzeRNAseq”函数时在控制台上看到的。每行的+是什么意思??

> analyzeRNASeq <- function(){
+   
+   buildindex(basename="/Users/iRebecca/Box/BEC_FILES/GENOMES/GC_", reference="/Users/iRebecca/Box/BEC_FILES/GENOMES/GCF_000006845.1_ASM684v1_genomic.fna.gz")
+   
+   filePath <- "/Users/iRebecca/Box/BEC_FILES/GENOMES/file_list.csv"
+   fileNames <- read.table(filePath, header=TRUE, sep=",", quote="", stringsAsFactors=FALSE, comment="")
+   for(n in (1:nrow(fileNames))){
+ 
+     align(index="/Users/iRebecca/Box/BEC_FILES/GENOMES/GC_",
+       readfile1=fileNames[n,1],
+       readfile2=fileNames[n,2],
+       output_file=fileNames[n,3])
+ 
+   outputData <- featureCounts(files=fileNames[n,3],annot.ext="/Users/iRebecca/Box/BEC_FILES/GENOMES/GCF_000006845.1_ASM684v1_genomic.gff.gz",
+                isGTFAnnotationFile=TRUE,GTF.featureType="CDS",GTF.attrType="locus_tag")
+   outputFilePath <- fileNames[n,4]
+   write.table(outputData[1], file=outputFilePath, quote=FALSE, sep=",")
+   }
+ }

在我看来,一旦我进入这个功能,它应该开始在我的笔记本电脑上运行,但事实并非如此。请帮忙。

4

1 回答 1

1

正如评论中所建议的那样,您的代码定义了一个函数,也就是说,解释它在使用(“调用”)时应该做什么,但实际上并没有使用它。

在 R 中定义函数的语法如下:

function_name <- function(<zero or more parameters>){<instructions>}

执行完这些代码行后,您的 R 会话中有一些新内容(例如function_name),您可以稍后使用其名称访问这些内容。

我假设您使用的是 RStudio。当您在编辑器中“cmd-enter”时,您只需执行函数的创建。您可以将您在控制台中看到的内容解释为要执行的代码单元的复制粘贴形式,其中 R 将“+”号放在属于“不完整”代码单元的行前面。

要执行函数内部的指令,您应该“调用”它,操作如下:

function_name(<arguments, if needed>)

在您的情况下,该函数没有参数,因此您只需在函数名称后打开和关闭括号,而不提供参数,以指示必须执行函数内部的指令。

于 2021-01-05T09:35:43.917 回答