Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >有没有一种方法可以使用R中的应用函数来优化这个循环?

有没有一种方法可以使用R中的应用函数来优化这个循环?
EN

Stack Overflow用户
提问于 2020-06-23 17:46:01
回答 2查看 21关注 0票数 0

我在R中有以下两个数据帧:

代码语言:javascript
运行
AI代码解释
复制
> head(gene)

    V1        V2 V3
1 chr2 178525989 10
2 chr2 178525990 10
3 chr2 178525991 10
4 chr2 178525992 10
5 chr2 178525993 10
6 chr2 178525994 10

> head(exons)

    V1  V2          V3        V4        V5 V6 V7 V8  V9
1 chr2 lrg exonic_part 178807212 178807423  .  -  . 001
2 chr2 lrg exonic_part 178804552 178804655  .  -  . 002
3 chr2 lrg exonic_part 178802138 178802341  .  -  . 003
4 chr2 lrg exonic_part 178800395 178800682  .  -  . 004
5 chr2 lrg exonic_part 178799825 178799910  .  -  . 005
6 chr2 lrg exonic_part 178799487 178799731  .  -  . 006

exons$V4exons$V5中的每一对表示范围的开始和结束。在exons中有364行,因此有364行。

我需要做的是检查gene$V2的每个元素,并检查它是否包含在exons中的任何一个范围内。如果包含它,我需要在另一个向量中添加一个外显子条目,如果它被排除了,我需要在该向量中添加一个“内含子”条目。

因此,例如,如果gene$V2的前三个元素至少包含在一个范围内,而接下来的三个元素没有包含在内,我希望得到这样的向量:

代码语言:javascript
运行
AI代码解释
复制
> include_exclude[1:6]
[1] "exon" "exon" "exon" "intron" "intron" "intron"

目前,我正在使用来自inside.range()spatstat.utils函数来完成此操作,该函数接受一个或多个要检查(x)和一个范围(r)的值,并输出TRUE (如果在范围内)和FALSE (超出范围)。我将它与循环中的循环一起使用:

代码语言:javascript
运行
AI代码解释
复制
include_exclude <- c()
for (i in 1:dim(gene)[1]){
        list <- c()
        for (x in 1:dim(exons)) {
                list <- c(list,inside.range(as.numeric(gene$V2[i]),as.numeric(exons[x,4:5])))
        }
        if (sum(list) > 0) {include_exclude <- c(include_exclude, "exon")}
        else {include_exclude <- c(include_exclude, "intron")}
        print(i) #to see how far along the loop is
}

然而,这显然是一种极其低效的做法。我怀疑在R中使用一个apply函数的效率要高得多,但我从来没有真正理解它们,也不知道如何在这种情况下使用它们。有人能帮忙吗?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-23 17:55:41

如果您的每个gene$V2都在exons$V4$V5中的至少一个范围内,这将返回。

代码语言:javascript
运行
AI代码解释
复制
sapply(gene$V2, function(v) any(exons$V4 <= v & v <= exons$V5, na.rm = TRUE))
# [1] FALSE FALSE FALSE FALSE FALSE FALSE

很容易将其转换为"exon""intron" (使用ifelsedplyr::if_elsedata.table::fifelse或仅使用向量查找),如

代码语言:javascript
运行
AI代码解释
复制
rets <- sapply(gene$V2, function(v) any(exons$V4 <= v & v <= exons$V5, na.rm = TRUE))
ifelse(rets, "exon", "intron")
# [1] "intron" "intron" "intron" "intron" "intron" "intron"
c("intron", "exon")[ 1 + rets ]
# [1] "intron" "intron" "intron" "intron" "intron" "intron"
票数 0
EN

Stack Overflow用户

发布于 2020-06-23 17:54:10

您可以使用V4V5列创建一个序列,并检查gene$V2中是否存在该值,并相应地分配该值。

代码语言:javascript
运行
AI代码解释
复制
all_sequence <- unique(unlist(Map(`:`, exons$V4, exons$V5)))
gene$include_exclude <- ifelse(gene$V2 %in% all_sequence, 'exon', 'intron')

使用ifelse很容易理解,但是不需要ifelse也可以做到这一点。

代码语言:javascript
运行
AI代码解释
复制
gene$include_exclude <- c('intron', 'exon')[(gene$V2 %in% all_sequence) + 1]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62546334

复制
相关文章
Baidu与Google地图API初探
前天周六,有个好友过来玩,他说想在他的站点中加入地图导航模块,但不知道选择哪个第三方Map API
全栈程序员站长
2022/07/12
1.8K0
Baidu与Google地图API初探
Baidu与Google地图API初探
前天周六,有个好友过来玩,他说想在他的网站中加入地图导航模块,但不知道选择哪个第三方Map API
阳光岛主
2019/02/19
2.6K0
java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]
离线地图开发环境支持谷歌地图、百度地图、高德地图等等所有常用地图类型,支持在局域网内的地图部署、二次开发。
全栈程序员站长
2022/11/08
1.7K0
java google 离线地图开发_如何发布google离线地图及二次开发API[通俗易懂]
google地图简单示例
要先获取Google地图的API 密钥:http://code.google.com/intl/zh-CN/apis/maps/signup.html
liulun
2022/05/09
4450
以客户为中心
最近一直在思考一个问题,如何才能带领团队把事情做好,如何才能把产品做好。过程中也用了很多方法,比如戴明环,比如事情安排的“行人准则”,效果也是非常不错,交代的事情基本也能满足要求,但是总谈不上优秀。 正好最近看了雷军的第三次年度演讲:穿越人生低谷的感悟,结合自己平时做事的理念,觉得“以客户为中心”最能作为核心团队乃至公司的核心业务理念。 什么是以客户为中心 除了以客户为中心 以技术为中心 以产品为中心:腾讯 以股东为中心: 以员工为中心:谷歌(工程师文化) 为什么要以客户为中心 世界上只有客户给你钱
十毛
2022/08/23
2800
以业务为中心
一直觉得没有啥好写的,什么技术,业务什么的都比较简单。最近幡然醒悟,有什么是不能用文字表达的呢?
李子健
2023/05/25
1900
Google JavaScript API
You can use the JavaScript client library to interact with Google APIs, such as People, Calendar, and Drive, from your web applications. Follow the instructions on this page to get started.
拿我格子衫来
2022/01/24
6220
Google 发布 Google Friend Connect API
Google Friend Connect 是 Google 推出的社会化网络工具,通过此工具你可以将各种支持 OpenSocial 的应用通过 Google Friend Connect 在你的网站上应用,并且可以和已有的社会化网络进行整合应用。今天 Google 更是开放了 Google Friend Connect 的 API,让你能够访问到更多 Google Friend Connect 核心的数据和功能。 Google Friend Connect 提供两种 API,JavaScript API 允许你能够直接集成社会化社区到你的网页中。REST API 能够允许你把网站的现有的登陆系统和数据集成新的社会化数据和活动,并能实现让你的网站实现通过 Gmail 账号,Yahoo 账号,OpenID 等方式实现单点登录。
Denis
2023/04/14
6720
Google 地图切片URL地址解析
Google地图采用的是Web墨卡托投影(如下图),为了方便忽略了两极变形较大的地区,把世界地图做成了一个边长等于赤道周长的正方形(赤道半径为6378137米),原点在正方形中心,即经纬度为(0,0)处。Web墨卡托投影的X,Y坐标取值范围为:[-20037508.3427892,20037508.3427892],对应的经度取值范围为[-180,180],对应的纬度范围则为[-85.05112877980659,85.05112877980659]。具体投影解释请参考墨卡托投影:
全栈程序员站长
2022/07/04
1.8K0
Google 地图切片URL地址解析
来自Google的经验:以用户为中心的机器学习七大技巧
作者 | Josh Lovejoy 编译 | 聂震坤 设计面向用户的机器学习时需要注意的7点 如果你刚开始接触机器学习并且感觉有些无所适从,不要惊慌或者怀疑自己,给自己时间适应。此篇文章中指出了七个要
用户1737318
2018/07/20
5600
Openlayers中Google地图的加载
在实现的时候,参考了mygisforum的文章http://blog.csdn.net/mygisforum/article/details/7582449的内容,同时结合gwc的gridset,实现了google切片在Openlayers2中的调用与展示。
牛老师讲GIS
2018/10/23
2K0
Openlayers中Google地图的加载
使用Google翻译Api
将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为包含服务帐户密钥的JSON文件的文件路径。在Linux或macOS系统中设置方法如下:
职场亮哥
2020/10/10
4.6K0
腾讯地图Javascript API GL
腾讯位置服务在多平台为开发者提供了丰富的地图展现形式,帮助从属于不同领域的开发人员轻松完成构建地图并在其基础上打造专属内容的工作。同时配合海量数据、个性化定制、可视化等能力满足各个行业场景下对地图的需求。
鱼找水需要时间
2023/02/16
2.5K0
腾讯地图Javascript API GL
高德地图应用(4)设置地图的中心点
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title></title> <script type="text/javascript" src="https://web
贵哥的编程之路
2021/06/08
1.7K0
高德地图应用(4)设置地图的中心点
GitHub标星8W,Google面试指南
作为全球最顶尖的互联网公司,进入Google工作一直是很多工程师的梦想,自 1996 年诞生以来,Google 至今已推出多款改变世界的互联网产品,旗下也汇聚了一大批优质的工程师与科学家。 与此同时,因其崇尚自由开放,不作恶的互联网理念,也受到了许多互联网优秀人才的认可,Google 也成为了他们最想去的互联网企业之一。
xiangzhihong
2022/11/30
2270
Google JS API 授权 失败
// 初始化OAuth2.0授权 const authenticate = () => { return gapi.auth2.getAuthInstance() .signIn({scope: "https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/driv
拿我格子衫来
2022/01/24
4.1K0
Google JS API 授权 失败
Google短网址的API
除了速度快,goo.gl还提供详细的点击统计。比如,Yahoo首页的短网址是http://goo.gl/QuXj,那么它的统计数据就在http://goo.gl/info/QuXj。加上后缀".qr",还能得到这个网址的二维条形码,Yahoo的就是http://goo.gl/QuXj.qr。
ruanyf
2018/09/21
4.4K1
Google短网址的API
离线地图开发:google地图坐标和百度地图的相互转化
jQuery.MapConvert = { x_pi : 3.14159265358979324 * 3000.0 / 180.0, /// <summary> /// 中国正常坐标系GCJ02协议的坐标,转到 百度地图对应的 BD09 协议坐标 /// point 为传入的对象,例如{lat:xxxxx,lng:xxxxx} /// google地图坐标转换成百度地图坐标 /// </summary> Convert_GCJ02_To_BD
用户1220053
2022/01/07
1.3K0
Google MAP API 初步尝试
今天看了一下午Google的API,发现还挺简单的。稍微懂点Javascript就可以了。 写了个小例子
EltonZheng
2021/01/26
1.6K0
Google JavaScript API 的使用
您可以使用JavaScript客户端库与Web应用程序中的Google API(例如,人物,日历和云端硬盘)进行交互。请按照此页面上的说明进行操作。
拿我格子衫来
2022/01/24
3.1K0

相似问题

无法在Google地图中以标记为中心

20

不能让Google地图以带有角度的标记为中心

17

iframe中的Google地图不以标签/标记为中心

20

以Google地图API为中心的标记+地理定位

210

移动google地图中心javascript api

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档