开发手册 欢迎您!
软件开发者资料库

R - 二进制文件

R二进制文件 - 从简单和简单的步骤学习R编程语言,从基本到高级概念,包括R安装,语言基础,语法,文字,数据类型,变量,函数,循环,决策,模块,数组,列表,矢量,数学,矩阵,统计,图形,Excel数据,csv数据,概述,环境设置,运算符,字符串,因子,数据框,包,数据整形,二进制文件,XML文件,Json文件,Web数据,数据库,饼图图表,条形图,箱形图,直方图,线图,散点图,平均值,中位数和模式,线回归,多元回归,Logistic回归,正态分布,二项分布,泊松回归,协方差分析,时间序列分析,非线性最小二乘,决策树,随机森林,生存分析,卡方检验。

二进制文件是一个文件,其中包含仅以位和字节形式存储的信息(0和1).它们不是人类可读的,因为它中的字节转换为包含许多其他不可打印字符的字符和符号.尝试使用任何文本编辑器读取二进制文件将显示像Ø这样的字符;和ð.

特定程序必须读取二进制文件才能使用.例如,Microsoft Word程序的二进制文件只能由Word程序读取为人类可读的形式.这表明除了人类可读的文本之外,还有更多的信息,如字符和页码等的格式化,它们也与字母数字字符一起存储.最后,二进制文件是一个连续的字节序列.我们在文本文件中看到的换行符是将第一行连接到下一行的字符.

有时,其他程序生成的数据需要由R作为二进制文件处理.还需要R来创建可以与其他程序共享的二进制文件.

R有两个函数 WriteBin() readBin()创建和读取二进制文件.

语法

  writeBin(object,con) readBin(con,what,n)

以下是所用参数的描述 :

  • con 是读取或写入二进制文件的连接对象.

  • 对象是要写的二进制文件.

  • 什么是类似于字符的模式表示要读取的字节的整数等.

  • n 是从二进制文件中读取的字节数.

示例

我们认为R内置数据"mtcars".首先,我们从中创建一个csv文件,并将其转换为二进制文件并将其存储为OS文件.接下来我们读取创建到R中的这个二进制文件.

编写二进制文件

我们将数据框"mtcars"读作csv文件然后将其作为二进制文件写入操作系统.

 #将"mtcars"数据框读取为csv文件并仅存储列"cyl","am"和"gear".  write.table(mtcars,file ="mtcars.csv",row.names = FALSE,na ="", col.names = TRUE,sep =",")#将csv文件中的5条记录存储为新数据帧.  new.mtcars< -  read.table("mtcars.csv",sep =",",header = TRUE,nrows = 5)#创建一个连接对象来编写二进制文件使用模式"wb".  write.filename = file("/web/com/binmtcars.dat","wb")#将数据框的列名写入连接对象.  writeBin(colnames(new.mtcars),write.filename)#将每列中的记录写入文件.  writeBin(c(new.mtcars $ cyl,new.mtcars $ am,new.mtcars $ gear),write.filename)#关闭文件以便写入以便它可以由其他程序阅读.  close(write.filename)

读取二进制文件

上面创建的二进制文件存储所有数据为连续字节.因此,我们将通过选择适当的列名值和列值来读取它.

 #创建一个连接对象来读取文件二进制模式使用"rb".  read.filename<  -  file("/web/com/binmtcars.dat","rb")#首先读取列名. n = 3,因为我们有3列.  column.names<  -  readBin(read.filename,character(),n = 3)#下一步读取列值. n = 18,因为我们有3个列名和15个值.  read.filename<  -  file("/web/com/binmtcars.dat","rb") bindata<  -  readBin(read.filename,integer(),n = 18)#打印数据.  print(bindata)#读取第4个字节到第8个字节的值,表示"cyl".  cyldata = bindata [4:8]  print(cyldata)#读取第9个字节到第13个字节的值,表示"am".  amdata = bindata [9:13]  print(amdata)#读取第9个字节到第13个字节的值,表示"gear".  geardata = bindata [14:18]  print(geardata)#将所有读取值合并到dat帧.  finaldata = cbind(cyldata,amdata,geardata) colnames(finaldata)= column.names  print(finaldata)

当我们执行上面的代码时,它产生以下结果和图表 :

[1]    7108963 1728081249    7496037          6          6          4 [7]          6          8          1          1          1          0[13]          0          4          4          4          3          3[1] 6 6 4 6 8[1] 1 1 1 0 0[1] 4 4 4 3 3     cyl am gear[1,]   6  1    4[2,]   6  1    4[3,]   4  1    4[4,]   6  0    3[5,]   8  0    3

正如我们所看到的,我们通过读取R中的二进制文件来获取原始数据.