为什么我的 R 函数没有运行?尝试将 R 脚本发送到集群

问题描述

这是一个非常初级的问题,所以提前致谢。

我得到了一个 R 脚本来将 fastq 文件与基因组对齐。我需要做的就是将这个 R 脚本发送到我的 uni 集群,但我想确保脚本在我自己的计算机上运行良好,然后再将其发送到空白处。我试图了解为什么我的函数无法运行。它首先加载一个库,然后其余的动作都包含在一个函数中。当我 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,")
  }
}

这是我在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,comment="")
+   for(n in (1:nrow(fileNames))){
+ 
+     align(index="/Users/iRebecca/Box/BEC_FILES/GENOMES/GC_",+       readfile1=fileNames[n,+       readfile2=fileNames[n,+       output_file=fileNames[n,3])
+ 
+   outputData <- featureCounts(files=fileNames[n,+                isGTFAnnotationFile=TRUE,GTF.attrType="locus_tag")
+   outputFilePath <- fileNames[n,4]
+   write.table(outputData[1],")
+   }
+ }

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

解决方法

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

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

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

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

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

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

function_name(<arguments,if needed>)

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...