Reading from MySQL
install.packages("RMySQL", type="source")
library(DBI)
library(RMySQL)
ucscDb<-dbConnect(MySQL(),user="genome",host="genome-mysql.cse.ucsc.edu")
result<-dbGetQuery(ucscDb,"show databases;");dbDisconnect(ucscDb);
Result
首先在电脑上安装MySQL、Rtools40
分别设置MySQL、R的环境变量,将lib文件夹放到bin中
下载RMySQL包
加载DBI、RMySQL包
用dbConnect 命令链接数据库,传递的user是genome,传递主机给数据库所在的地方,即host="genome-mysql.cse.ucsc.edu"。例子中即网址。
dbGetQuery给数据库一个查询请求
"show databases;"是一个sql命令,即通过R将SQL命令传递至数据库
运行结束后,使用dbDisconnect(ucscDb);断开与数据库的连接,结果返回为TRUE即为连接断开
举例:
hg19<-dbConnect(MySQL(),user="genome",db="hg19",
host="genome-mysql.cse.ucsc.edu")
allTables<-dbListTables(hg19)
length(allTables)
allTables[1:5]
访问genome服务器中hg19这个数据库,并查看这个数据库中的表,举例为查看前五张表的名字,每个数据集代表1个文件,每个数据类型都有自己的表
dbListFields(hg19,"affyU133Plus2")
如果对特定类别的表感兴趣,该代码即为在hg19数据库中,"affyU133Plus2"中的字段,为列的信息,如想知道关于行的信息
dbGetQuery(hg19,"select count(*) from affyU133Plus2")
count(*)
发送查询指令,计算这个表中所有记录
读取表格
affData<-dbReadTable(hg19,"affyU133Plus2")
head(affData)
读取hg19中,文件"affyU133Plus2"的数据集,返回的是数据框本身
数据过大可引起R不能读取,因此选择数据中的子集很重要
每次运行新的数据之前,应关闭之前的数据重新开始。
query<-dbSendQuery(hg19,"select * from affyU133Plus2 where misMatches between 1 and 3")
传递命令,选择misMatches中1-3的数
affyMis<-fetch(query);quantile(affyMis$mis$misMAtches)
affyMisSmall<-fetch(query,n=18);dbClearResult(query);fetch是获取数据,只获取前10行
dim(affyMisSmall)
可以在“”中输入任何一个sql查询指令
dbDisconnect(hg19)
最后记得关闭数据库