搜索
查看: 2172|回复: 0

[R] 代码调试技巧- 针对R语言

[复制链接]

634

主题

1182

帖子

4030

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4030
发表于 2017-6-3 08:40:07 | 显示全部楼层 |阅读模式
R里面的黑魔法非常多,因为概念本身就很多,当然其它语言也有黑魔法,少出bug无法就是熟练而已。
那么初学者碰到bug要做的应该是自己尝试理解。
为什么自己不去找bug,绝大部分的原因是你用的他人写的代码,没有勇气去尝试一一解读。
自己写的代码,一般知道前因后果,很容易找到感觉察觉到可能是哪里出的问题。
当然,也不排除撞鬼的时候,一个bug搞四五个小时饭都没得吃。
但是没办法,我们大多数人都是独立编程,旁边人对编程的理解跟扫地阿姨都是一个水平,我承认,孤军奋斗的感觉不是滋味。

但是,谁不是从那个阶段熬过来的呢?

言归正传,遇到bug该肿么办呢?
首先,你需要熟练使用3个基本函数,R语言初学笔记之吾日三省吾身!至少使用1000次以上。
然后,多留心遇到的黑魔法,及时总结和强化理解。 R黑魔法合集

最后,把bug地方前前后后所有代码一步步运行,查看所有的变量是不是符合你的认知。


如果是循环里面出错了,比如对一个表达矩阵dat进行循环
[AppleScript] 纯文本查看 复制代码
apply(dat,1,function(x){
do1(x)
do2(x)
do3(x)

})

对这个dat矩阵的每一行都处理3个函数,如果报错的是do2这个函数,在第40列报错。
那么你就认为的设置x=dat[40,] 接着自己运行do2(x) ,运行前后看看是什么问题。

那么一个朋友的来信,就很容易解决了。

老师您好,"对有临床信息的表达矩阵批量做生存分析" 运行全部代码如下:
> rm(list=ls())
> setwd('D:/Youdao')
> dat=read.csv('data.csv',header =TRUE,row.names= 1,sep = ",")
> rt=read.csv('da.csv',header =TRUE,row.names= 1,sep = ",")
> os=rt[,2]  
> STATUS=rt[,1]
> log_rank_p <- apply(dat, 1, function(values1){
+     group=ifelse(values1>median(values1),'high','low')
+     survival_dat <- data.frame(group=group,os=os,stringsAsFactors = F)
+     library(survival)
+     my.surv <- Surv(survival_dat$os,rep(1,length(survival_dat$os)))
+     kmfit2 <- survfit(my.surv~survival_dat$group)
+     data.survdiff=survdiff(my.surv~group,data = survival_dat)
+     p.val = 1 - pchisq(data.survdiff$chisq, length(data.survdiff$n) - 1)
+ })
Error in data.frame(group = group, os = os, stringsAsFactors = F) :
  arguments imply differing number of rows: 99, 93
Called from: data.frame(group = group, os = os, stringsAsFactors = F)
Browse[1]>

data.csv为基因表达谱矩阵文件,da.csv为生存分析文件,小弟一直琢磨很久仍然没能解决,还请您帮忙指导下,万方感谢!!










上一篇:R黑魔法合集
下一篇:cytoscape互作图可视化
你这个问题很复杂,需要打赏,请点击 http://www.bio-info-trainee.com/donate 进行打赏,谢谢
回复

使用道具 举报

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

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-7-18 09:35 , Processed in 0.033682 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.