用于记录R基本知识,勤学勤练习
# a为一个data frame,取含有RNA-Seq的行
index <- grep("RNA-Seq", a$Assay_Type)
b <- a[index,]
##不读取带有!的行
data <- read.table("file",comment.char="!", sep="\t")
##删除第一列, b是data.frame
b<-b[,-1]
##添加行名,列名
rowname(b) <- b[,1]
colname(b) <- b[1,]
##a为一data frame
##最小值
sort(a$num)[1] ; 等价min(a$num)
##最大值
sort(a$num, decreasing=T)[1] ; 等价max(a$num)
##five number, 最小值,下四分位,中位数,上四分位,最大值
fivenum(a$num)
##<5000的行
b <- a[a$num < 5000,]
#以2进行分割
b <- "adfdfd2jdfkd"
strsplit(b, "2")
adfdf, jdfkd
t.test(1:10, y = c(7:20))
t = -5.4349, df = 21.982, p-value = 1.855e-05
#p value <0.05, 则显著
##a, 连续粘贴4次
paste("a",1:5)
#结果:
a 1, a 2, a 3, a 4
##a, 连续粘贴4次,以“-”连接
paste("a",1:5, sep='-')
结果:
a-1, a-2, a-3, a-4
##复制a 4次
rep("a", 4)
结果:
a,a,a,a
##b 为一个data frame, 每一行求平均数
apply(b, 1, function(x){
mean(x)
})
其中 1 代表行,2 代表列
上面可以简写为:
apply(b, 1, mean)
# 获取超过5个元素>0 的行
b[apply(b ,1 function(x) sum(x>1) >5), ]
# 比如输出PDF图片
pdf("test.pdf", width=12, height=10)
ggplot(data, aes(x,y)) +geom_line()
dev.off
## 在R语言中取百分位比用quantile()函数
> data <- c(1,2,3,4,5,6,7,8,9,10)
> quantile(data,0.5)
50%
5.5
> quantile(data,c(0.25,0.75))
25% 75%
3.25 7.75
## 可以画阈值线,比如BSA画图时;有index 数据 data
p + geom_hline(yintercept =quantile(data, 0.95) ,color="blue",linetype=2,size-0.5)
# which 可以筛选数据库中特有的行,比如有数据框data,筛选出delt大于0的行
zheng <- data[which(data$delt>0),]
## melt() 和 dcast()为reshape2中的命令
## melt(): 可以将长的数据框变为短的
> head(new_data)
pos xx_mean xy_mean yy_mean
19 36001 1.4052965 0.8884643 1.0787320
20 38001 0.8538059 1.0241777 1.1718369
21 40001 1.7150511 1.5263786 1.4663535
23 44001 0.0000000 1.8001673 0.9257189
24 46001 0.2837331 1.5285861 1.5567648
25 48001 0.6670272 2.0511266 0.0000000
> head(melt(new_data,id.vars = "pos"))
pos variable value
1 36001 xx_mean 1.4052965
2 38001 xx_mean 0.8538059
3 40001 xx_mean 1.7150511
4 44001 xx_mean 0.0000000
5 46001 xx_mean 0.2837331
6 48001 xx_mean 0.6670272
以“pos”为不变的ID列,其它变量合并在variable列中,其对应的值为value列
## dcast(): 可以将短的数据框变为长的
> head(test)
pos variable value
1 36001 xx_mean 1.4052965
2 38001 xx_mean 0.8538059
3 40001 xx_mean 1.7150511
4 44001 xx_mean 0.0000000
5 46001 xx_mean 0.2837331
6 48001 xx_mean 0.6670272
> head(dcast(test,pos~variable))
pos xx_mean xy_mean yy_mean
1 36001 1.4052965 0.8884643 1.0787320
2 38001 0.8538059 1.0241777 1.1718369
3 40001 1.7150511 1.5263786 1.4663535
4 44001 0.0000000 1.8001673 0.9257189
5 46001 0.2837331 1.5285861 1.5567648
6 48001 0.6670272 2.0511266 0.0000000
#~左边的表示不变的列,右边则展开
均以如下例子进行操作
> head(data)
Chrom Pos Pvalue
1 7 5813753 4.191874e-10
2 7 5831698 2.779123e-09
3 7 5818992 3.800454e-09
4 7 5850455 1.097069e-05
5 3 14961172 1.521800e-05
6 7 5808739 1.833734e-05
data_chr <- data%>% filter(Chrom>6,Pos>14961172)
> head(data_chr)
Chrom Pos Pvalue
1 7 5813753 4.191874e-10
2 7 5831698 2.779123e-09
3 7 5818992 3.800454e-09
4 7 5850455 1.097069e-05
> data_min <- data%>% select(-Chrom)
> head(data_min)
Pos Pvalue
1 5813753 4.191874e-10
2 5831698 2.779123e-09
3 5818992 3.800454e-09
4 5850455 1.097069e-05
5 14961172 1.521800e-05
6 5808739 1.833734e-05
去除所有属性小于6的行
data_p <- data%>% filter_all(all_vars(.<6))
筛选任意一属性>3的行
data_p <- data%>% filter_all(any_vars(.>3))
筛选以seq开头的属性任一大于3的行
data_r <- data%>% filter_at(vars(starts_with("Seq")),any_vars(.>3))
筛选以d开头的属性任一可被2整除的行
data_R <- data%>% filter_at(vars(starts_with("Seq")),any_vars((. %%2)==0))
group_by()指在对一数据框按照一定变量进行分组,一般和summaries() 一起用
# 按cyl进行分组
by_cyl <- mtcars %>% group_by(cyl)
#
by_cyl %>% summarise(
disp = mean(disp),
hp = mean(hp)
)
# A tibble: 3 x 3
cyl disp hp
<dbl> <dbl> <dbl>
1 4 105. 82.6
2 6 183. 122.
3 8 353. 209
cyl组中有4,6,8三个变量,所以根据该变量进行求均值
也可以同时对两个变量进行分组
#现对vs进行分组,然后对am进行分组,vs中有0,1两个值,am中也有0,1两个值
by_vs_am <- mtcars %>% group_by(vs, am)
# 分别求数量
by_vs <- by_vs_am %>% summarise(n = n())
> by_vs
# A tibble: 4 x 3
# Groups: vs [2]
vs am n
<dbl> <dbl> <int>
1 0 0 12
2 0 1 6
3 1 0 7
4 1 1 7
# 可以看到vs 为0,am为0 共有12个,vs为0,am为1的有6个
用于添加新的一列
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
> head(mtcars %>% mutate(total =1))
mpg cyl disp hp drat wt qsec vs am gear carb total
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 1
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 1
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 1
合并两个数据框,类似于cat,paste
test <- cbind(data1,data2)
即可进行合并
得到不同的颜色
data <- read.table("IV_vs_non_IV",sep = "\t",header = T)
cols <- rainbow(5*1.2)
cols
[1] "#FF0000FF" "#FFFF00FF" "#00FF00FF" "#00FFFFFF" "#0000FFFF" "#FF00FFFF"
boxplot(ks ~ gene, data = data, col = cols)

比如有一数据框
head(data)
Gene Go level
1 gene1 GO:1 BP
2 gene2 Go:2 MF
将第二列和第一列互换
head(data[c(2,1,3)])
Go Gene level
1 GO:1 gene1 BP
2 Go:2 gene2 MF
现有两列数据
v1 v2
1 23
2 32
3 2
4 9
## 以v2从大到小排序后,得到对应v1
reorder(v1,v2)
## 以v2从小到大排序后,得到对应v1
reorder(v1,-v2)
首先安装BiocManager
install.packages('BiocManager')
BiocManager::install('')
library(ggplot2)
## 具体根据染色体数量进行调整;下面图一个3X4 共12条染色体
par(mfrow =c(3,4))
data <- read.table('Tri_ang_all_ltr.4buyi1Mb200kb_4r',sep = '\t',header = T)
对应染色体名称
vec <- c('LG01','LG02','LG03','LG04')
data1 <- data[which(data$Chr==val),]
barplot(P ~ BP, data = data1, col='#3366cc', border='#3366cc',ylab = 'Number',xlab = paste0(val,' (Mb)'))
}
.libPaths('/data/pub//R/x86_64-redhat-linux-gnu-library/3.6')
install.packages('LDheapment', lib='/data/pub//R/x86_64-redhat-linux-gnu-library/3.6')
> .libPaths()
[1] "/data/pub//R/x86_64-redhat-linux-gnu-library/3.6"
[2] "/data/pub//miniconda2/lib/R/library"
可以看到有2个r包的路径
.libPaths('/data/pub//R/x86_64-redhat-linux-gnu-library/3.6')
临时讲上述路径添加为r包的路径
新建一个 .Rprofile的文本文件
touch .Rprofile
并将 要定义的路径存入该文本文档中。路径如下
.libPaths(c("path1","path2","path3"))
install.packages("https://cran.r-project.org/src/contrib/Archive/LDheatmap/LDheatmap_1.0-6.tar.gz",repos = NULL, type="source")
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
项目介绍随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱小学生兴趣延时班预约小程序的设计与开发被用户普遍使用,为方便用户能够可以随时进行小学生兴趣延时班预约小程序的设计与开发的数据信息管理,特开发了小程序的设计与开发的管理系统。小学生兴趣延时班预约小程序的设计与开发的开发利用现有的成熟技术参考,以源代码为模板,分析功能调整与小学生兴趣延时班预约小程序的设计与开发的实际需求相结合,讨论了小学生兴趣延时班预约小程序的设计与开发的使用。开发环境开发说明:前端使用微信微信小程序开发工具:后端使用ssm:VU
Rails相对较新。我正在尝试调用一个API,它应该向我返回一个唯一的URL。我的应用程序中捆绑了HTTParty。我已经创建了一个UniqueNumberController,并且我已经阅读了几个HTTParty指南,直到我想要什么,但也许我只是有点迷路,真的不知道该怎么做。基本上,我需要做的就是调用API,获取它返回的URL,然后将该URL插入到用户的数据库中。谁能给我指出正确的方向或与我分享一些代码? 最佳答案 假设API为JSON格式并返回如下数据:{"url":"http://example.com/unique-url"
我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or
我正在尝试复制此GETcurl请求:curl-D--XGET-H"Authorization:BasicdGVzdEB0YXByZXNlYXJjaC5jb206NGMzMTg2Mjg4YWUyM2ZkOTY2MWNiNWRmY2NlMTkzMGU="-H"Content-Type:application/json"http://staging.example.com/api/v1/campaigns在Ruby中,通过电子邮件+apikey生成身份验证:auth="Basic"+Base64::encode64("test@example.com:4c3186288ae23fd9661c
如何学习ruby的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我最近开始学习Ruby,这是我的第一门编程语言。我对语法感到满意,并且我已经完成了许多只教授相同基础知识的教程。我已经写了一些小程序(包括我自己的数组排序方法,在有人告诉我谷歌“冒泡排序”之前我认为它非常聪明),但我觉得我需要尝试更大更难的东西来理解更多关于Ruby.关于如何执行此操作的任何想法?