在 R 中读取固定宽度的文本文件
在本文中,我们将了解如何使用 R 编程语言读取固定宽度的文本文件。
在文本文件中,列将具有固定宽度,以字符指定,这决定了它可以包含的最大数据量。没有分隔符用于分隔文件中的字段。相反,较小数量的数据用空格填充以填充分配的空间,这样给定列的开头总是可以指定为与行开头的偏移量。
有多种方法可以读取定宽文本文件中的数据:
- 使用 read.fwf()函数
- 使用 readLines()函数。
- 使用 Fortran 样式格式规范。
方法一:使用read.fwf()函数。
此方法是使用 utils 包中的 read.fwf函数完成的。我们必须使用列宽进行阅读。
Syntax: read.fwf(file, widths, header = FALSE, sep = “\t”, skip = 0, row.names, col.names, n = -1, buffersize = 2000, fileEncoding = “”, …)
现在,我们使用 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()函数非常适合文本文件,因为它逐行读取文本并为每一行创建字符对象。
Syntax: readLines(path)
Parameter:
path: path of the file
代码:
电阻
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 风格的格式规范读取固定格式的数据文件
Syntax: read.fortran(file, format, …, as.is = TRUE, colClasses = NA)
Parameters:
- file: File or connection to read from.
- format: Character vector or list of vectors. See ‘Details’ below.
- as.is: Keep characters as characters?
- colClasses: Variable classes to override defaults.
这里我们创建了一个名为“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)
输出: