分享

R语言学习笔记分享

 萌小芊 2018-01-27

个人认为学习R语言的一个很有效的方法就是去尝试用代码解决某个小问题。之前的文章小提琴图的画法介绍了两个绘制小提琴图的R包,但是二者所需的数据格式是两种不同的形式。而我们在平常作图过程中最常用的也就是这两种格式的数据(如下图)。

有童鞋就问:“有没有可以实现这两种格式数据转换的R脚本呢?”


作为一名R语言的初学者,我自己尝试写了一个R脚本,希望实现两种数据格式的转换。由于学习时间较短,代码有很多地方可能需要改进,先分享给大家一起讨论。


我的思路是先导入表格数据,然后判断是那种类型的表格,用 if 函数进行“分流”,利用for 循环以及rbind()cbind()函数将列进行重接“拼接”,最后用write.table()函数导出新表格。最终希望实现在工作路径下的任意一种类型的表格自动转换成另一种类型表格的目标。下面是脚本和注释(为了方便大家逐步调试查看结果,每个赋值的变量都有“显示”):


#首先,查看工作路径的txt数据表格(制表符分割) 

filelist<-dir(pattern>

filelist

#读取表格(这里只读取第一个)

mydata<>

mydata

#获取变量名 

val<>

val


# 获取变量数量 ,行数,变量水平等等,用于格式转换

m<>

m

col1<>

col1 

nf<-length(col1)>#获取数据框所有的行数

nf

col2<-levels(col1)>#变量的水平

col2

np<-length(col2)>#变量的水平数

np 

nrow<-nf>

nrow


#获取表格的“特征”数据,用于判断导入表格的类型

testn<>

testn

test1<>

test2<>

test1

test2

test3<>

test4<>

test3

test4


#判断导入的表格是那种表格类型 

if(test1==test2&test3==test4&m>=2){

 test<-1 >#“单列型”

}else if(test3!=test4&m>=2){

 test<-2 >#“多列型”

}

test 


#“单列型”表格 转换为 “多列型”表格

if(test==1){

 x1<>

  x1

 p<>

 q<>

 for(i in 2:np){

 p<>

 q<>

 x2<>

 x1<>

  }

 colnames(x1)=col2

  x1

 write.table(x1,file ='newtable_m.txt',sep='\t',col.names=NA,quote = FALSE)

 

}else if(test==2){  # “多列型”表格 转换为 “单列型”表格

 x1<-data.frame(x=val[1],y=mydata[,1])># 将第1列转为数据框

  x1

 for(i in 2:m){

   x2<>

   x1<>

  }

  x1

 write.table(x1,file ='newtable_s.txt',sep='\t',col.names=NA,quote = FALSE)

}

x1

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多