[英]no such file or directory (error in R)
我想在一個數據框中導入和綁定一組 .csv 文件。 我創建了一個文件列表,然后創建了一個 for 循環來讀取每個文件並將它們綁定在一起。 但是,在第二個文件中,我收到一條錯誤消息,指出缺少此類文件或目錄。 但是它確實存在於我創建的文件列表中。 請問有什么關於這個問題的建議嗎? 謝謝你。
file.names <- list.files(path = pathname, pattern = " trial.csv")
for(i in seq(file.names)){
file1 <- read.csv(file.names[i], header = TRUE, stringsAsFactors = FALSE)
file1 <- t(file)
file1 <- data.frame(file, stringsAsFactors = FALSE)
colnames(file1) = file1[1,]
print(file1)
}
默認情況下, list.files()
返回沒有目錄詳細信息的文件名。 導入文件時,您通常希望設置full.names = TRUE
以返回絕對路徑(包括目錄名稱)。
一個好的代碼模式如下。
library(assertive.files)
files_to_import <- list.files(some_path, full.names = TRUE)
assert_all_are_existing_files(files_to_import)
data <- lapply(files_to_import, read.csv)
我想在一個數據框中導入和綁定一組 .csv 文件。
@richie-cotton 提供了一個解決您路徑問題的答案,但我想解決您問題中突出顯示的部分。
Richie Cotton 的代碼:
library(assertive.files)
files_to_import <- list.files(some_path, full.names = TRUE)
assert_all_are_existing_files(files_to_import)
data <- lapply(files_to_import, read.csv)
將以data
結尾,一個 data.frames 列表。 您希望這些成為一個data.frame
。 看看這個對類似問題的回答: https : //stackoverflow.com/a/18489830/5333994
我的建議是使用結束rbindlist
所產生的名單上data.frame
。
library(data.table)
data <- rbindlist(data)
事實上,如果你打算使用data.table
你可以用fread
替換read.csv
這可能會加快速度。
library(data.table)
library(assertive.files)
files_to_import <- list.files(some_path, full.names = TRUE)
assert_all_are_existing_files(files_to_import)
data <- rbindlist(lapply(files_to_import, fread))
如果您想以data.frame
而不是data.table
只需使用setDF
。
setDF(data)
如果你想避免一起使用data.table
,運行do.call
可能是你最好的選擇。
data <- do.call("rbind", data)
請注意我上面鏈接的答案,這可能比使用rbindlist
慢得多,具體取決於您擁有的文件數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.