意外结果导致在使用biomaRt库的函数上下文中调用变量

汤姆·奎因

我有一个一般性问题,我认为这可以归结为某种范围界定问题。

以下是利用biomaRt的getSequence()函数的公式的摘要。用户输入自定义功能(1)基因名称,以及可选的(2)上游要导入的碱基对数量。

# Load libraries
library(biomaRt)
# Let's make a custom "getSequence" function
getUpstream <- function(x, bp.upstream = 50){
    bp.upstream <- bp.upstream
    ensembl <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
    upstream.master <- NULL
    for(i in x){
        upstream.i <- getSequence(id = i,
            type = "hgnc_symbol",
            seqType = "coding_gene_flank",
            upstream = bp.upstream,
            mart = ensembl
        )
        upstream.master <- rbind(upstream.master, upstream.i)
    }
    return(upstream.master)
}

假设我使用此功能运行搜索,但未指定上游碱基对的数量,例如:

getUpstream("NOTCH4")

出乎意料的是,如果没有以下行,该函数将无法正常工作:

bp.upstream <- bp.upstream

其他行,如print(bb.upstream)也会使代码正常工作。

我以为bp.upstream会在调用函数时定义,因此一旦调用getSequence就会将上游设置为50。谁能帮我理解为什么不呢?

研究

这里是一种避免范围问题的解决方法。

# Load libraries
library(biomaRt)
# Let's make a custom "getSequence" function
 getUpstream <- function(x, bp.upstream = 50){
  ensembl <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
  upstream.master <- lapply(x, function(i,stream)
                         getSequence(id = i,
                              type = "hgnc_symbol",
                              seqType = "coding_gene_flank",
                              upstream = stream,
                              mart = ensembl),stream=bp.upstream)


  upstream.master
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在函数上下文中使用此关键字的Java语言回调

如何告诉python传递给函数的意外变量类型在上下文中是正确的

通过参数调用时的函数上下文

在调用上下文中访问局部变量

请解释“!”的含义 在函数调用的上下文中

Javascript 函数正在改变上下文中的变量

在广义函数上下文中具有抽象参数的特殊函数

从非静态上下文中调用同一类的Java构造函数会导致递归,但使用静态,它可以正常工作吗?

函数上下文中一元计算的先前值是多少?

is.data.frame(data)对象...在函数上下文中找不到

错误的函数上下文

绑定导入的函数上下文

JS call():正在调用的函数内意外的“ this”上下文

如何在不同的上下文中使用变量?

在上下文中使用数据构造函数

容器上下文中的 Angular 使用函数

在上下文中评估变量

Sfinae上下文中的模板变量

如何在安全上下文中使用@Autowiring从应用程序上下文中调用bean

在离子项目中使用角度库时,必须从注入上下文中调用inject()

javascript-如何访问调用者函数上下文对象

如何在 puppeteer $$eval 函数中使用浏览器和节点上下文中的变量?

更改JavaScript中的函数上下文(用于访问局部变量)

函数上下文改变无法识别局部变量

JS:在严格模式下的函数上下文中为“ this”,MDN规范与chrome 67实现不匹配

如果调用方法然后对结果执行.Where(),如何执行“从上下文中的tbl返回(从上下文中的[表名]选择tbl]”)?

在与GWT模块库不同的上下文中调用GWT服务?

在调用者上下文中打印包含列表变量的表达式

SPARK中不允许在干扰上下文中调用volatile函数