簡體   English   中英

讀取多個csv文件

[英]Reading multiple csv files

我需要讀取多個csv文件,並為每個文件打印前六個值。 我嘗試了這段代碼,但是顯然是錯誤的,因為在循環的每次迭代中di的值都會被覆蓋。 如何讀取多個文件?

library(xlsx)
for(i in 1:7){
    di = read.csv(file.choose(),header=T)
    print(di)
}
d = list(d1,d2,d3,d4,d5,d6,d7)
lapply(d,head)

如果您只想打印6行或存儲它們,以及是否要保留其余的csv文件,我會感到有些困惑。 假設您要打印的是6行,然后假設您知道文件名,則可以使用

print(read.csv(filename, nlines = 6))

並為每個文件重復。 或者,如果您要保存每個文件,則可以執行

f1 <- read.csv(filename, nlines = 6)

對每個重復上述步驟,並使用print(head)

或者使用您的方法,但解決覆蓋問題:

library(xlsx)
for(i in 1:7)
  assign(paste0("d",i), read.csv(file.choose(),header=T))

  lapply(list(d1,d2,d3,d4,d5,d6,d7),head)

使用assign動態分配名稱,以便每個名稱都是唯一的,並且不會相互覆蓋,我想這就是您的目標。 雖然這不是很“優雅”,但適合您選擇的方法

如果要將數據幀保留在列表中,而不是將每個數據幀分配給一個新對象。

選項1:

fs <- dir(pattern = ".csv")
d <- list()
for (i in seq_along(fs)) {
    d[[i]] <- read.csv(fs[[1]])
    print(head(d[[i]]))
    }

選項2:

fs <- dir(pattern = ".csv")
d <- lapply(fs, read.csv)
lapply(d, head)

使用選項1,您需要初始化一個空列表以填充並使用雙括號[[表示法。 使用選項2,您不需要初始化一個空列表。

暫無
暫無

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

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