在处理聚类算法时,我找的K—means 聚类程序,是对txt文件进行处理的,但是我现在要处理数据库里的文件,怎么转化文件类型啊?
在R或者Rstudio中操作:
load(file="AAA.Rdata") # 路径自己指明
write(BBB,file="CCC.txt") #BBB 是加载Rdata后的对象名称
1、我有一个包含样本在不同位置甲基化水平值以及样本分组信息的文件(example.txt),内容如下:
原始数据
2、读入R
data<-read.table('example.txt',header=T,stringsAsFactor=F,row.names=1,check.names=F)
数据框data内容展示
3、Task1:获取样本的分组信息,给各样本依据分组信息分配颜色值
当将数据读入后,data中存储了原始数据所有信息。
样本信息是colname,分组信息存在data的第一行。(在我眼里,数据框就该是可以任意横竖变的啊!!!为啥R一定要死死地抠着“行表示观测,列表示变量”的规则呢!!!也许后面涉及到统计我就明白了QAQ)
首先,设定颜色变量;
col<-c('#CC3333','#2B91D5','#4DB34D','#000000','#CCBE88','#BA94F3','#F9AC3A','#7191C2','#704B53')
group<-data[1,]
group信息
此时的group是数据框。
数据框转换成字符型向量(convert dataframe to character):
gg<-as.character(unlist(data[1,]))
数据框转换成向量
设定颜色,
groupCol<- col[1:length(unique(gg))]
ggCol<-dataframe(unique(gg),ggCol)
分组颜色
获取样本和分组信息,
sample<-colnames(data)
tmpdata<-dataframe(gg,data)
分组信息和样本信息构成的数据框
合并样本、分组、颜色,
finalCol<-merge(ggCol,tmpdata,by.x=1,by.y=1)
合并分组、颜色、样本信息
这样就可以保证不同组别样本不同颜色,同一组同一颜色啦。
如果需要直接去finalCol的grouCol列,我们会发现这一列的数据为’因子‘格式(factor),可我需要使用的是字符串啊。
那么,因子转换成字符串(convert factor to character)方法如下:
new_groupCol<-as.character(finalCol$groupCol)即可。
4、Task2:将数据框中数字信息转换成矩阵(convert frame to matrix)
原始操作如下:
tmp<-data[-1,] #去除第一行group信息
tmp内容
用tmp来画heatmap,报错:
heatmap(tmp)
Error in heatmap(tmp) : 'x' must be a numeric matrix
显示tmp不是数字(numeric)类型,于是乎,转数字格式,报错:
as.numeric(tmp)
Error: (list) object cannot be coerced to type 'double'
修正后:
as.numeric(unlist(tmp)) ###成功
生成矩阵:
matrix(as.numeric(unlist(tmp)),nrow=nrow(tmp))
matrix
总算是成功。