簡體   English   中英

R中read.csv的可變文件名

[英]variable file names for read.csv in R

這可能是一個非常普遍的問題,因此我特意尋找一種優雅或至少不那么笨重的解決方案。

我有001.csv到200.csv的一系列文件。 我需要能夠在函數中選擇我想要的那些,以便傳遞列表並且僅選擇適當的列表。

function(filenumbers = 1:200 {
}

我創建了一組非常丑陋的if語句,在必要時提供'00'和'0'前綴:

for (i in filenumbers) {
if (i < 10) {filename<-paste("00", i, ".csv", sep ="")
} else if (i < 100) {filename<-paste("0", i, ".csv", sep="")
} else {filename<-paste(i, ".csv", sep="")}
print(filename)
}

這確實輸出了正確的名稱列表,但似乎必須有更好的方法來處理這個問題。 我對R有點新,所以任何過度解釋都會受到贊賞。

這將很好地利用sprintf函數。 它有許多格式化選項,但對於這種情況我會使用

sprintf("%03d.csv", 1:200)

#   [1] "001.csv" "002.csv" "003.csv" "004.csv" "005.csv"
#   [6] "006.csv" "007.csv" "008.csv" "009.csv" "010.csv"
#     ...
#  [96] "096.csv" "097.csv" "098.csv" "099.csv" "100.csv"
# [101] "101.csv" "102.csv" "103.csv" "104.csv" "105.csv"
#     ...
# [191] "191.csv" "192.csv" "193.csv" "194.csv" "195.csv"
# [196] "196.csv" "197.csv" "198.csv" "199.csv" "200.csv"

formatC()paste0()應該有效:

paste0(formatC(1:200, width = 3, format = "d", flag = 0), ".csv")

暫無
暫無

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

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