以R語言逐行讀取文字檔案
Jesse John
2023年9月19日
在R程式設計中,逐行讀取文字檔案是數據分析和操作任務中常見的操作。本文將介紹在R中逐行讀取文字檔案的常用方法。
使用readLines()
函式逐行讀取文字檔案
當讀完所有行後,我們將使用readLines()
函式。由於我們不知道行數,因此需要知道何時到達檔案末尾。
當沒有更多行時,readLines()
函式將返回一個空字元向量character(0)
。
在這一點上,我們將使用break
退出迴圈。請注意,迴圈不會在空白行上中斷,因為這些行具有行尾標記。
我們將在每次迴圈迭代中使用identical()
函式來檢查該行是否與character(0)
相同。
如果相同,我們將break
;否則,我們處理該行。在本例中,我們將其列印出來。
根據說明文件,文字檔案的最後一行應該有一個行尾標記,以使readLines()
函式能夠一致地工作。
首先,請使用以下文字構建一個樣本文字檔案,並以UTF-8編碼和適當的檔案名稱保存它(需要相應地在程式碼中替換檔案名稱)。
The first line.
The second line.
The third line.
Last line.
在示例程式碼中,我們將執行以下操作。
-
創建連接並打開它。
-
逐行遍歷檔案,打印每一行。
-
當行為
character(0)
時退出迴圈。 -
關閉連接。需要明確打開的連接需要明確關閉。
示例程式碼:
# Explicitly create and open a connection.
# REPLACE THE FILE NAME AS PER YOUR FILE.
myCon = file(description = "filename.txt", open="r", blocking = TRUE)
# The position in the connection advances to the next line on each iteration.
# Loop till the line is the empty vector, character(0).
repeat{
pl = readLines(myCon, n = 1) # Read one line from the connection.
if(identical(pl, character(0))){break} # If the line is empty, exit.
print(pl) # Otherwise, print and repeat next iteration.
}
# Explicitly opened connection needs to be explicitly closed.
close(myCon)
rm(myCon) # Removes the connection object from memory.
輸出:
The first line.
The second line.
The third line.
Last line.
讓我們來看另一個示例。
示例程式碼:
# Specify the path to your text file
file_path <- "your_file.txt"
# Use the readLines function to read the file line by line
# It reads the entire content of the specified file and stores each line as an element in a character vector named lines
lines <- readLines(file_path)
# Loop through the lines and process them
for (line in lines) {
# Process each line here (e.g., print it)
cat(line, "\n")
}
執行此程式碼時,它將逐行讀取文字檔案並顯示每一行。
輸出:
The first line.
The second line.
The third line.
Last line.
請記得將"your_file.txt"
替換為您打算使用的樣本文字檔案的實際檔案路徑。
作者: Jesse John