R语言实现二进制文件读写操作

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

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

有时,由其他程序生成的数据需要由R作为二进制文件处理,另外R需要创建可以与其他程序共享的二进制文件,在R中有两个函数用来创建和读取二进制文件,它们分别是:WriteBin()和readBin()函数,来看下语法:

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

参数描述如下:

  • con - 是要读取或写入二进制文件的连接对象。
  • object - 是要写入的二进制文件。
  • what - 是像字符,整数等的模式,代表要读取的字节。
  • n - 是从二进制文件读取的字节数。

我们接下来使用R内置数据“mtcars”创建一个csv文件并将其转换为二进制文件并将其存储为操作系统文件,如下:

#my first R program

# Read the "mtcars" data frame as a csv file and store only the columns "cyl", "am" and "gear".
write.table(mtcars, file = "mtcars.csv",row.names = FALSE, na = "",
  col.names = TRUE, sep = ",")

# Store 5 records from the csv file as a new data frame.
new.mtcars <- read.table("mtcars.csv",sep = ",",header = TRUE,nrows = 5)

# Create a connection object to write the binary file using mode "wb".
write.filename = file("D:/r_file/binmtcars.dat", "wb")

# Write the column names of the data frame to the connection object.
writeBin(colnames(new.mtcars), write.filename)

# Write the records in each of the column to the file.
writeBin(c(new.mtcars$cyl,new.mtcars$am,new.mtcars$gear), write.filename)

# Close the file for writing so that it can be read by other program.
close(write.filename)

运行上面的文件就会产生一个csv文件和一个dat二进制文件。这个dat文件将所有数据作为连续字节存储, 因此,我们将通过选择列名称和列值的适当值来读取它,如下:

#my first R program

# Create a connection object to read the file in binary mode using "rb".
read.filename <- file("D:/r_file/binmtcars.dat", "rb")

# First read the column names. n = 3 as we have 3 columns.
column.names <- readBin(read.filename, character(), n = 3)

# Next read the column values. n = 18 as we have 3 column names and 15 values.
read.filename <- file("D:/r_file/binmtcars.dat", "rb")
bindata <- readBin(read.filename, integer(), n = 18)

# Print the data.
print(bindata)

# Read the values from 4th byte to 8th byte which represents "cyl".
cyldata = bindata[4:8]
print(cyldata)

# Read the values form 9th byte to 13th byte which represents "am".
amdata = bindata[9:13]
print(amdata)

# Read the values form 9th byte to 13th byte which represents "gear".
geardata = bindata[14:18]
print(geardata)

# Combine all the read values to a dat frame.
finaldata = cbind(cyldata, amdata, geardata)
colnames(finaldata) = column.names
print(finaldata)

上述代码演示了几种输出的方式,大家有兴趣的可以自己扩展下。

到此这篇关于R语言实现二进制文件读写操作的文章就介绍到这了,更多相关R语言 二进制文件读写操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • R语言文本文件读写(txt/csv/xlsx)

    本文主要介绍了R语言文本文件读写,分享给大家,具体如下: read.table(file,sep,hesder) #file 文件路径 #sep 分隔符 #header 第一行是不是列名(如果第一行是列名导入的时候填TRUE:默认值是FALSE,即把第一行算作数据) 准备工作 为方便后面使用的相对路径,我们先使用setwd(路径)设置路径,设置好之后可以用getwd() 获取当前路径进行检查. > setwd("F:/r-test-data") > getwd() [1]

  • R语言实现二进制文件读写操作

    二进制文件是一个文件,其中包含仅以位和字节形式存储的信息(0和1),它们是不可读的,因为其中的字节转换为包含许多其他不可打印字符的字符和符号,随便我们尝试使用任何文本编辑器读取二进制文件将显示为类似Ø和ð这样的字符. 但是二进制文件必须由特定程序读取才能使用.例如,Microsoft Word程序的二进制文件只能通过Word程序读取到人类可读的形式.这表明,除了人类可读的文本之外,还有更多的信息,如格式化的字符和页码等,它们也与字母数字字符一起存储.最后,二进制文件是一个连续的字节序列. 我们在

  • R语言对二进制文件操作详解

    二进制文件是包含仅以位和字节(0和1)的形式存储的信息的文件.它们不是人类可读的,因为它中的字节转换为包含许多其他不可打印字符的字符和符号.尝试使用任何文本编辑器读取二进制文件将显示如Ø和ð的字符. 二进制文件必须由特定程序读取才能使用.例如,Microsoft Word程序的二进制文件只能通过Word程序读取到人类可读的形式.这表示,除了人类可读的文本之外,还有更多的信息,例如字符和页码等的格式化,它们也与字母数字字符一起存储.最后一个二进制文件是一个连续的字节序列.我们在文本文件中看到的换行

  • C语言实现文件读写操作

    本文实例为大家分享了C语言实现文件读写操作的具体代码,供大家参考,具体内容如下 键盘读入字符串写到文件中,再从文件读出显示在控制台 #include<stdio.h> #include<string.h> int main() { FILE *fp; char string[6];//方括号中是几就输入几个字符串 if( (fp=fopen("file.txt","w"))==NULL ) { printf("cannot open

  • R语言对CSV文件操作实例讲解

    在 R 语言中,我们可以从存储在 R 语言环境外的文件中读取数据. 我们还可以将数据写入将被操作系统存储和访问的文件. R 语言可以读取和写入各种文件格式,如​csv​,​excel​,​xml​等. 在本章中,我们将学习从​csv​文件读取数据,然后将数据写入​csv​文件. 该文件应该存在于当前工作目录中,以便 R 语言可以读取它. 当然我们也可以设置我们自己的目录并从那里读取文件. 获取和设置工作目录 您可以使用​getwd()​函数检查R语言工作区指向的目录. 您还可以使用​setwd(

  • R语言对Excel文件操作实例

    Microsoft Excel是最广泛使用的电子表格程序,以.xls或.xlsx格式存储数据. R语言可以直接从这些文件使用一些excel特定的包. 很少这样的包是XLConnect,xlsx,gdata等.我们将使用xlsx包. R语言也可以使用这个包写入excel文件. 安装xlsx软件包 您可以在R控制台中使用以下命令来安装"xlsx"软件包. 它可能会要求安装一些额外的软件包这个软件包依赖. 按照具有所需软件包名称的同一命令安装其他软件包. install.packages(&

  • R语言对数据库进行操作的实例详解

    数据是关系数据库系统以规范化格式存储. 因此,要进行统计计算,我们将需要非常先进和复杂的Sql查询. 但R语言可以轻松地连接到许多关系数据库,如MySql,Oracle,Sql服务器等,并从它们获取记录作为数据框. 一旦数据在R语言环境中可用,它就变成正常的R语言数据集,并且可以使用所有强大的包和函数来操作或分析. 在本教程中,我们将使用MySql作为连接到R语言的参考数据库. RMySQL包 R语言有一个名为"RMySQL"的内置包,它提供与MySql数据库之间的本地连接. 您可以使

  • R语言对Web数据操作实例

    许多网站提供数据供其用户使用. 例如,世界卫生组织(WHO)以CSV,txt和XML文件的形式提供健康和医疗信息的报告. 使用R语言程序,我们可以从这些网站以编程方式提取特定数据. R语言中用于从网站中提取数据的一些包是"RCurl",XML"和"stringr",它们用于连接到URL,识别文件所需的链接并将它们下载到本地环境. 安装R语言的包 处理URL和链接到文件需要以下的包. 如果它们在R语言环境中不可用,您可以使用以下命令安装它们. install

  • R语言的Dataframe常用操作使用

    上节我们简单介绍了Dataframe的定义,这节我们具体来看一下Dataframe的操作 首先,数据框的创建函数为 data.frame( ),参考R语言的帮助文档,我们来了解一下data.frame( )的具体用法: Usage data.frame(..., row.names = NULL, check.rows = FALSE, check.names = TRUE, fix.empty.names = TRUE, stringsAsFactors = default.stringsAs

  • R语言绘图样式设置操作(符号,线条,颜色,文本属性)

    设置图像样式有两种方法,一种是全局修改,一种只针对一幅图片有效. 全局修改 a<-c(1:10) #全局修改 old_par<-par(no.readonly=TRUE) #记录默认样式到变量old_par中 par(lty=2,pch=17) #设置线型lty=2虚线,pch=17实心三角形,键值对的方式进行设置 #第一幅图,已经和默认样式不一样了 b<-rnorm(10) plot(a,b,type='b') #第二幅图,和第一幅图样式一样 b<-rnorm(10) plot(

  • R语言差异检验:非参数检验操作

    非参数检验是在总体方差未知或知道甚少的情况下,利用样本数据对总体分布形态进行推断的方法.它利用数据的大小间的次序关系(秩Rank),而不是具体数值信息,得出推断结论. 它是参数检验所需要的某些条件不满足时所使用的方法. 和参数检验相比,非参数检验的优势如下: 稳健性.对总体分布的条件要求放宽 对数据类型要求不严格,适用有序分类变量 适用范围广 劣势: 没有利用实际数值,损失了部分信息,检验的有效性较差. 非参数性检验的方法非常多,基于方法的检验功效性角度,本文只涉及 双独立样本:Mann-Whi

随机推荐