R语言 读取固定宽度的文本文件

R语言 读取固定宽度的文本文件

在这篇文章中,我们将看到如何在R编程语言中读取固定宽度的文本文件。

在文本文件中,列会有固定的宽度,以字符为单位,这决定了它可以包含的最大数据量。 文件中没有使用分隔符来分隔字段。 相反,较小数量的数据用空格填充,以填补所分配的空间,这样,一个给定的列的开始总是可以被指定为从一行的开始的偏移。

有许多方法可以读取固定宽度文本文件中的数据

  • 使用read.fwf()函数
  • 使用readLines()函数。
  • 使用Fortran风格的格式规范。

方法1:使用read.fwf()函数

这种方法是使用utils包中的read.fwf函数完成的。我们必须使用列宽进行读取。

语法: read.fwf(file, widths, header = FALSE, sep = "\t", skip = 0, row.names, col.names, n = -1, buffersize = 2000, fileEncoding = " ", ...)

现在,我们使用read.fwf()来读取名为 “abcd.txt “的固定宽度文本文件。

# Creating file
abcd.txt<-tempfile()
  
cat(file=abcd.txt,"Rahul2023","Ravi 2521",
    "Jaggu2130",sep="\n")
  
# Reading fixed width
read.fwf(abcd.txt, width = c(5, 2, 2),
         col.names = c("Studentname","Test1",
                       "Test2"))
unlink(abcd.txt)
R

输出

这里我们采用(5,2,2)的格式,因为学生姓名是4,5的字符串长度,分数是2的字符串长度。

在R语言中读取固定宽度的文本文件

在上面的输出中,我们可以看到它读取了 “abcd.txt “文件,并以5,2,2的格式显示(例如:rahul,20,23来自 “rahul2023″),列名为Studentnames,Test1,Test2。

方法2:使用readLines()函数。

R语言中的 readLines() 函数从一个输入文件中读取文本行。readLines()函数非常适合于文本文件,因为它逐行读取文本,并为每一行创建字符对象。

语法: readLines(path)

参数:

path: 文件的路径

代码

abcd.txt<-tempfile()
  
# adding data to the empty tempfile
cat(file = abcd.txt, "Rahul2023", "Ravi 2521",
    "Jaggu2130", sep = "\n")
  
readLines(abcd.txt)
unlink(abcd.txt)
R

输出

在R语言中读取固定宽度的文本文件

方法3:使用Fortran风格的格式规范。

这里我们将使用read.fortran()函数。它用于使用Fortran风格的格式规范来读取固定格式的数据文件

语法: read.fortran(file, format, ..., as.is = TRUE, colClasses = NA)

参数

  • file:要读取的文件或连接。
  • format:字符向量或向量的列表。见下面的 “细节”。
  • as.is:将字符保留为字符?
  • colClasses:用于覆盖默认值的变量类别。

在这里,我们创建了一个名为 “abcd.txt “的文件作为示例,如下面的代码所示。通过使用read.fortran函数,我们可以使用fortran风格的格式规范读取固定宽度的文本文件中的数据。

abcd.txt<-tempfile()
cat(file = abcd.txt, "Rahul2023",
    "Ravi 2521", "Jaggu2130", sep = "\n")
  
# format of character length=5, 2 
# integers of 2-sized width
read.fortran(abcd.txt,c("A5","2I2"))
  
# format of 5 characters of width=1,4
# integers of width-1
read.fortran(abcd.txt,c("5A1","4I1"))
  
# using list of formats for each entry 
# of data for special cases
read.fortran(abcd.txt,list(c("A5","2I2"),
                           c("A4","X1","2I2"),
                           c("A5","2I2")))
  
unlink(abcd.txt)
R

输出

在R语言中读取固定宽度的文本文件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册