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

📅  最后修改于: 2022-05-13 01:55:22.181000             🧑  作者: Mango

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

在本文中,我们将了解如何使用 R 编程语言读取固定宽度的文本文件。

在文本文件中,列将具有固定宽度,以字符指定,这决定了它可以包含的最大数据量。没有分隔符用于分隔文件中的字段。相反,较小数量的数据用空格填充以填充分配的空间,这样给定列的开头总是可以指定为与行开头的偏移量。

有多种方法可以读取定宽文本文件中的数据:

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

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

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

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

R
# 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
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
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)


输出:

下面我们就以(5,2,2)格式的宽度学生的名字都在4,5字符串长度和标记均为2级字符串的长度。

在上面的输出中,我们可以观察到它读取“abcd.txt”文件并以5,2,2长度的格式显示(例如:rahul,20,23 from“rahul2023”),列名为Studentnames,Test1 ,测试2。

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

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

代码:

电阻

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)

输出:

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

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

这里我们创建了一个名为“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)

输出: