R语言里r rownamess=F, sep="\t"是什么意思

R语言数据储存与读取
1 首先用getwd() 获得当前目录,用setwd("C:/data")设定当前目录
2 数据保存
创建数据框d
&d &- data.frame(obs = c(1, 2, 3), treat = c("A", "B", "A"), weight = c(2.3, NA, 9))
2.1 保存为简单文本
&write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F) # 空格分隔
&write.table(d, file = "c:/data/foo.txt", row.names = F, quote = F, sep="\t")& # tab 分隔的文件
2.2 保存为逗号分割文本
&write.csv(d, file = "c:/data/foo.csv", row.names = F, quote = F)
2.3 保存为R格式文件
&save(d, file = "c:/data/foo.Rdata")
2.4 保存工作空间镜像
&save.image( ) = save(list =ls(all=TRUE), file=".RData")
3 数据读取
读取函数主要有:read.table( ), scan( ) ,read.fwf( ),readLines().
3.1 用 read.table( ) 读 "c:\data& 下houses.dat
&setwd("C:/data"); HousePrice &- read.table(file="houses.dat")
如果明确数据第一行做表头,则使用header选项
&HousePrice &- read.table("houses.dat", header=TRUE)
read.table( ) 变形有: read.csv( ),read.csv2( ), read.delim( ), read.delim2( ).前两读取逗号分割数据,后两个读取其他分割符数据。
3.2& 用scan( ) 比read.table( ) 更灵活。
但要指定 变量类型:如:C:\data\data.dat:
&mydata &- scan("data.dat", what = list("", 0, 0))
&mydata &- scan("data.dat", what = list(Sex="", Weight=0, Height=0))
3.3 用read.fwf( )读取文件中一些固定宽度数据
如:C:\data\data.txt:
&mydata &- read.fwf("data.txt", widths=c(1, 4, 3), col.names=c("X","Y","Z"))
4 excel格式数据读取
4.1 利用剪切板
选择excel数据,再用(CTRL+C)复制。在R中键入命令:
&mydata &- read.delim("clipboard")
4.2 使用程序包 RODBC.
如: c:\data\body.xls
Sex Weight Height
& library(RODBC)
& z &- odbcConnectExcel("c:/data/body.xls")
& foo &- sqlFetch(z, "Sheet1")
& close(z)
To an Excel Spreadsheet 保存为Excel文件:
library(xlsx)&&& #&& 注意: 软件包需要安装
write.xlsx(mydata, "c:/mydata.xlsx") #&& 参考:
The WriteXLS function from the WriteXLS package (link: ) can write data to Excel.
Alternatively, write.xlsx from the xlsx package (link: ) will also work.
1 writeLines 会在最后一行/或者每行末尾加一个换行符
# fileConn&-file(output_fasta)# writeLines(mystr, fileConn)# close(fileConn)
fileConn&-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
txt &- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
txt &- c("Hallo", "World")
writeLines(txt, "outfile.txt")
2 另外一个写文件的方法是sink,不会在行末加换行符
sink(output_fasta)cat(mystr)sink()
sink("outfile.txt")
cat("hello")
cat("world")
& cat("Hello",file="outfile.txt",sep="\n")
& cat("World",file="outfile.txt",append=TRUE)file.show("outfile.txt")
line="blah text blah blah etc etc"
write(line,file="myfile",append=TRUE)
write is a wrapper for , which gives further details on the format used.
for writing any R objects,
for data frames, and
for reading data.
阅读(...) 评论()R语言读取外部数据文件
使用R语言的时候,如果是少量数据,不妨使用c()或其他函数进行创建;但是对于大量数据,最好还是先通过其他更方便的软件创建数据文件,然后使用R读入这个文件。
前文说,.csv是非常好的数据文件格式,跨平台支持非常好。我在Excel或者SPSS中创建的数据,只要存为csv格式,就可以使用几乎任何数据处理软件对这些数据进行处理了。使用通用格式在多人合作、不同版本兼容等常见行为中,优势十分明显。另外,之所以使用不同的数据处理软件,第一,可以取长补短。比如有些工作SPSS很复杂的,可以用R语言几行命令搞定。第二,可以进行软件间处理结果对照,发现问题。
R语言中读取外部文件的最基本函数是read.table(),先介绍read.table(),然后再介绍专门用来读csv的read.csv()。
敲入?read.table命令,就看到了关于数据输入函数的说明。对read.table,使用格式是这样的;
read.table(file, header = FALSE, sep =
"", quote = "\"'",
dec = ".", row.names,
col.names,
as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows
skip = 0, check.names = TRUE, fill =
!blank.lines.skip,
strip.white = FALSE, blank.lines.skip =
comment.char = "#",
allowEscapes = FALSE, flush =
stringsAsFactors =
default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown",
参数很多,最常用的也就几个,重写如下:
read.table(file, header = FALSE, sep =
"", quote = "\"'",
dec = ".", skip = 0,
strip.white = FALSE, blank.lines.skip =
comment.char = "#")
file表示要读取的文件。file可以是①绝对路径或者相对路径,但是一定要注意,因为在R语言中\是转义符,所以路径分隔符必须写成\\,比如“C:\\myfile\\myfile.txt”。②可以使剪切板的内容。③使用file.choose(),弹出对话框,让你选择文件位置。强烈推荐使用第三种方法,免去了记忆和书写文件路径的麻烦,特别是能够避免因数据文件位置移动带来的错误!例如:read.table(file.choose(),...)。
header来确定数据文件中第一行是不是标题。默认F,即认为数据文件没有标题,也即认为第一行就开始是数据了!例如:
姓名 年龄 收入
小六 12 350
如果header=F,读进来的第一行数据是“姓名 年龄
收入”,header=T,读进来的第一行是“小六 12 350”。
sep指定分隔符,默认是空格。quote是引号,默认就是双引号。dec是小数点的表示,默认就是一个点。skip是确定是否跳过某些行。strip.white确定是否消除空白字符。blank.lines.skip确定是否跳过空白行。comment.char指定用于表示注释的引导符号。
一般情况下,我们只需要默认值就够了。
下面是一个简单的例子,本例子中,首行是标题而不是数据,使用\t进行分割而不是空格。读取后的数据变量设为mydata。所以,可以写出读取方式为:
mydata&-read.table(file.choose(),header=T,sep="\t")
其中,T和TRUE的效果是一样的,正如F和FALSE的效果是一样的。
和read.table有所不同的,是read.csv的默认参数有别。注意看,header和sep的默认值。
read.csv(file, header = TRUE, sep = ",",
quote="\"", dec=".",
fill = TRUE,
comment.char="")
因为csv就是逗号分割的意思,当然sep必须是逗号。header也是默认有标题的。fill是默认填充的,即遇到行不相等的情况,空白域自动添加既定值。如果使用默认的设置,可以写出:
mydata2&-read.csv(file.choose())
十分简单。
对于读取剪切板的方式,不推荐使用。我们之所以使用读取文件,就是增加程序的可复用性,而读剪切板显然是破坏了这种初衷的。因此,不到万不得已,尽量使用文件路径或者文件选择的形式。
对于其他软件的专用格式,是要使用扩展包的,比如常见的foreign包引入之后,可以读Minitab,
S, SAS, SPSS, Stata, Systat,
dBase等软件专用格式的数据文件。这个操作此处就不谈了。
最后,提醒大家一定要勤使用、多使用help。RStudio的布局,让help查看十分便捷。很多时候,忘了某个命令怎么玩,只要在命令窗口输入“?某函数”,就可以边看右侧的提示,边在左侧命令栏继续工作,只需要左右晃动几下眼睛而已,将不会再为命令单词怎么拼、共有哪些参数可选等问题而困扰!看图:
如果您下载的时候感觉在下整理起来挺辛苦的,欢迎赏点儿辛苦钱。支付宝:
我的更多文章:
( 08:33:31)( 13:45:59)
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。R语言常用函数 - 简书
R语言常用函数
1.判断存在:一个元素是不是在向量中用a%in%b& a="TT"& b=c("AA","AT","TT")& a %in% b[1] TRUE2.判断某一元素这向量中的索引(第几个位置):index.TT=which(b==”TT”)& index.TT=which(b=="TT")#index.TT是想知道的索引号,which是判断函数,b是想知道的元素所在的向量& index.TT[1] 33.相当于python中的字典,names函数& b[1] "AA" "AT" "TT"& names(b)=c("geno1","geno2","geno3")#geno mean genotype& names(b)[1] "geno1" "geno2" "geno3"& names(b)[1][1] "geno1"& names(b)[1]="test"& names(b)[1] "test""geno2" "geno3"& names(b)=NULL& b[1] "AA" "AT"& b["geno2"]"AT"pop_name=c(“CEU”,"YRI")names(pop_name)=c(1,2)names(pop_name[1])=14.去除某一元素:b[-index.nu]#想去除元素”TT”,如果你不知道是第几个索引,可以先判断索引,再删除。&b=c("AA","AT","TT")&names(b)=c("geno1","geno2","geno3")& index.TT=which(b=="TT")& b=b[-index.TT]& bgeno1 geno2"AA""AT"5.相当于Python中的set()函数和count()函数:unique(),table()& b=c("TT","AT","AT","TT","AA")& unique(b)#即相当于去除所有的重复,只保留一个[1] "TT" "AT" "AA"& table(b)#以元素为name,统计各元素的个数bAA AT TT1226.字符串的分割:strsplit()& test="AA"& strsplit(test)错误于strsplit(test) :缺少参数"split",也没有缺省值& strsplit(test,split='')[[1]][1] "A" "A"& test=strsplit(test,split='')[[1]]& test[1] "A" "A"7.文本文档的写入:write.table()write.table( res.matrix,file=new.file,sep='\t',quote=F,row.names=F,col.names=F,append=T)#quote=F去掉引号后写入,row.names=F去掉行的名字写入,否则会把名字写进去##写入数据时候最好把数据存储成一个matrix然后直接写。要是每行每行写的话要注意数据的格式了。先建立一个空的matrix,见8,然后通过rbind或者cbind叠加上去。方法一:a=c()b=c(“AA”,”TT”,”CC”)for (i in 1:3){a=c(a,b)}write.table(a,file=”test.txt”)#你会发现结果是AATTCC….##而且还有行和列的名字,因为没有设置参数。因为对于c向量来说,写的话默认是竖着写的,每个元素占一行。所以比较方便的就是rbind方法二:a=c()b=c(“AA”,”TT”,”CC”)for (i in 1:3){a=rbind(a,b)}write.table(a,file=”test.txt”,quote=F,row.names=F,col.names=F)#你会发现结果是AA TT CCAA TT CCAA TT CC##原因是rbind把最总结果当做矩阵了。对于R数据的写入最好能生成最后的矩阵再写入。但是西面的梅一行写一次和方法二的效果是想通的,但是要用到append参数。a=c()b=c(“AA”,”TT”,”CC”)for (i in 1:3){a=rbind(a,b)write.table(a,file=”test.txt”,quote=F,row.names=F,col.names=F,append=T)}8.建立一个空的matrix:res.matrix &- matrix( ,nrow=0,ncol=6 )##这样就建立了一个0行6列的空matrix了。9.如何将R运行结果输出到文件& x=read.table("F:/my/work/chengxu/PValue/pc2jieguo/pc2302.txt")& z=t(x)& ks.test(y,z)Two-sample Kolmogorov-Smirnov testdata:y and zD = 0.207, p-value & 2.2e-16alternative hypothesis: two-sided如上面运行结果,我想将p-value & 2.2e-16自动保存到一个文件中,如何用R程序实现,谢谢!sink("output.txt")print(ks.test(y,z)$p.value)sink()http://cos.name/cn/topic/1630010 降序排列:& a=c(1,1.2,0.1,4,5,-0.1)& a=sort(a,decreasing=T)& a[1]5.04.01.21.00.1 -0.111. 取前1%的数& a=c(1:10,4:20,1:100,1:1000)& a=sort(a,decreasing=T)#先降序& sig=a[round(length(a)*0.01)]& sig[1] 99012.在shell中直接执行R脚本R CMD BATCH --argstest.R13. R中高级作图的方法14:设置字体类型:par(family='Times New Roman')15:控制图形四周的空白大小par(mfrow=c(3,1),mar=c(0,0,0,0))其中mar是四周的间距,分别为x,y上下的距离16控制作图区域的大小layoutlayout(c(1,2,3),height=c(1,1,0.5))分成竖着三份, 其中三份比列依次为(高度依次为2:2:1)17保留两位小数round(0.123,digits=2)18 在原有图的基础上画图:par(fig=c(0.1,0.5,0.43,0.65), new=TRUE)19 只显示y轴plot(1:10,1:10,axes=F)axis(2,at.....)20 调节刻度方向 lasplot(1:10,1:10,las=1)21 屏幕分割layout(matrix(1:16,4,4))###竖着plotpar(mfrow=c(4,4))##横着plot22.逻辑表示或者xor为异或,两值不等为真,两值相等为假。例:xor(0, 1)23. 从向量中随机取几个数samplesample(rep(1:1000),10)23 字符串转换成小数浮点型as.numeric("0.123")24. 读取不规范的文本f=readLines(afile,n=1)#n表示读几行f=strsplit(f,'\t')##分割f[1][[1]]##第一行f[1][[1]][1]##第一行 第一个字符串25. write 写入文件write(afile, "a\tb\t",append=T) #沿着每行一次 写入26. 不需要循环,这直接对matrix没行或者每列进行筛选操作apply()apply(data,col2 or row1, max&0)27.保留2位小数a=2.300a=as.numeric(sprintf(“%.3f”,a))28。调出假设检验的p valuet.test(data1,data2)$p.value13:18 提问
R语言,在本地的Rstudio上,读入数据左上多了一个x?请教各位,谢谢!
这条命令左上角多了x,其它都行,读出来class是数据框,挺规整
my_data &- read.table("D:\Data.txt", head=T,sep="\t") #######现在发现转化成numeric时,产生的NA数和行数一样多,我估计没写row.names=1的结果就是把第一列全纳入数据框了。。。。
本来是用这条,更不行。上条代码至少没报错(但事实证明有后果)。
gene_data &- read.csv("D:\Data.txt", head=T,sep="\t",row.names=1)
Error in read.table(file = file, header = header, sep = sep, quote = quote,
'row.names'里不能有重复的名字
因为我的数据是txt文件,有行名和列名,所以相加row.names=1,但第一条命令读出来也有行名和列名,就是本该空着一个格的左上角,成了x。
按赞数排序
照理左上角是不会有x的
除非你的txt存的时候就有问题,比如开头就空了一个\t
还有转化成numeric时你是怎么转换的?
其他相关推荐

我要回帖

更多关于 row.names 1 的文章

 

随机推荐