楼主: p930822
11756 2

[问答] 如何实现先判断两个数据框中的两列是否相等,之后再比较其他列? [推广有奖]

  • 0关注
  • 0粉丝

学前班

90%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
90 点
帖子
1
精华
0
在线时间
5 小时
注册时间
2016-11-21
最后登录
2017-1-28

楼主
p930822 发表于 2016-11-21 17:28:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
现在有两个数据表,一个是染色体上的基因片段所在的位置,一个是结合在染色体上的RNA所在的位置。人体内23条染色体和两条性染色体的数据是乱序的,基因片段的数目和RNA的数目也不相等,如图:
吃啊.PNG
我需要先判断基因和RNA是否在同一条染色体上,再对它们的位置进行比较,位置有交集的,则输出RNA的名字,我的代码是:

lncRNA<-read.csv("E:/THU_research_intern/lncRNA/data/2012data/lncRNA.csv",header=TRUE,stringsAsFactors = FALSE)
ChP<-read.csv("E:/THU_research_intern/lncRNA/data/2012data/GSM1436260_ENCFF002ENI.csv",header=TRUE,stringsAsFactors = FALSE)
ChP<-ChP[order(ChP[,1]),]
for(x in 1:2708)
  for(i in 1:118484)
    if(lncRNA[i,1]==ChP[x,1]&&lncRNA[x,3]<=ChP[i,2]||lncRNA[x,1]==ChP[i,1]&&lncRNA[x,2]>=ChP[i,6]) lncRNA=lncRNA[-c(i),]
lncRNA[,4]

错误信息是,
Error in if (lncRNA[i, 1] == ChP[x, 1] && lncRNA[x, 3] <= ChP[i, 2] ||  :
  missing value where TRUE/FALSE needed

应该怎么写呢?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:如何实现 数据框 染色体 NCR 数据表 染色体 数据表 如何

然.PNG (15.99 KB)

然.PNG

吃啊.PNG (17 KB)

吃啊.PNG

沙发
ly_0 发表于 2016-11-23 10:44:52
不知道楼主的错误是什么问题,我用了另一种方法(没有原始数据,自己编了几个,楼主参考一下吧):
  1. DNA
  2.   chrom start1 stop1
  3. 1     1    100   200
  4. 2     2    200   250
  5. 3     4    300   400
  6. 4     6    400   550
  7. RNA
  8.   name chrom start2 stop2
  9. 1    a     1     50   150
  10. 2    b     2    150   250
  11. 3    c     3    300   400
  12. 4    d     6    200   300
  13. my_fun <- function(x,y){
  14.              my <- merge(x,y,by="chrom",all=F)
  15.              result <- my[which(!(my$start1 >= my$stop2 | my$stop1 <= my$start2)),]
  16.              return(result["name"]) }
  17. my_fun(DNA,RNA)
  18.   name
  19. 1    a
  20. 2    b
复制代码

藤椅
qiu435 发表于 2016-11-24 16:08:04
能把2个数据表贴出来看看嘛? 不清楚你得数据结构哦

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 06:54