簡體   English   中英

如何以列名作為標識符導入 csv 文件,而不是 R 中的文件名

[英]How to import csv file with column names as identifier, not file name in R

如何根據列名而不是文件名導入 csv 個文件? 假設我的工作目錄中有 2 個不同的 csv 文件。 其中一個文件名為“interesting.csv”,列名如下:“interesting1”“interesting2”“interesting3”。

我正在尋找可以掃描此文件夾、此工作目錄並按列名稱檢查文件的工具,以便我可以使用 read_csv2 讀取文件“interesting.csv”。 我想知道它是如何完成的,因為有時文件名會改變。 假設“interesting.csv”變為“interesting_cool.csv”,但列名不會改變。 在這種情況下,read_csv2("interesting.csv") 將不起作用,因為不會有這樣的文件。

是否有 function,它“掃描”文件夾中所有文件的標題並將其與我提供給 Rscript 的名稱進行比較?

像這樣: read_csv2(find_file_with_headers("interesting1", "interesting2", "interesting3"))

如果這是重復的,我很抱歉,但我找不到我需要的東西。

問候。

更新羅南的方法:

file_list1 <- list.files(getwd(), full.names = TRUE, pattern = "\\.csv$")
file_list2 <- list.files(getwd(), full.names = TRUE, pattern = "\\.CSV$")
(file_list <- c(file_list1, file_list2)); rm(file_list1, file_list2)

col_names = c("interesting1" "interesting2" "interesting3")

file_index <- which(sapply(file_list, function(x) 
  all(col_names %in% names(read.csv2(x, nrows = 0)))))[1]

return(read.csv2(file_list[file_index]))

如果我這樣拆分它,file_index 工作正常,而“file_index”將導致一個 NA。 如果標題合適,這不應該發生,對吧? 因此 return 也不起作用並給出錯誤: Error in file(file, "rt"): invalid 'description' argument

不確定R中是否有開箱即用的解決方案。

這是一種讀取文件夾中所有文件的列名並返回匹配所有傳遞的列名的完整文件的方法。

return_correct_file <- function(path, col_names) {

  file_list <- list.files(path, full.names = TRUE)
  file_index <- which(sapply(file_list, function(x) 
                     all(col_names %in% names(read.csv2(x, nrows = 0)))))[1]
  return(read.csv2(file_list[file_index]))
}

您可以將此 function 稱為:

data <- return_correct_file(path = 'path/to/csv/files', 
         col_names = c("interesting1", "interesting2", "interesting3"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM