gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:42:10 25 4
gpt4 key购买 nike

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

下面是使用 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 就会设置 upstream=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
}

关于r - 在使用 biomaRt 库的函数的上下文中调用变量的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19395056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com