我想從目錄中導入一系列文件並將它們中的每一個轉換爲數據框。我還想使用文件標題創建兩個具有標題相關值的新列。輸入文件的格式爲:xx_yy.out
其中XX目前可以是三個值之一。 YY目前有兩個可能的值。將來這些數字會上升。根據該意見解決方案的grep或pmatch?
編輯(見下文原來的問題)
再次編輯,以反映的@ JoshO'Brien
filelist <- as.list(dir(pattern = ".*.out"))
for(i in filelist) {
tempdata <- read.table(i) #read the table
filelistshort <- gsub(".out$", "", i) #remove the end of the file
tempsplit <- strsplit(filelistshort, "_") #remove the underscore
xx <- sapply(tempsplit, "[", 1) #get xx
yy <- sapply(tempsplit, "[", 2) #get yy
tempdata$XX <- xx #add XX column
tempdata$YY <- yy #add YY column
assign(gsub(".out","",i), tempdata) # give the dataframe a shortened name
}
下面的建議是原代碼表明我想用一些方法來確定XX和YY值,但不確定最佳方式:
我的輪廓(後@romanlustrik post)如下:
filelist <- as.list(dir(pattern = ".*.out"))
lapply(filelist, FUN = function(x) {
xx <- grep() or pmatch()
yy <- grep() or pmatch()
x <- data.frame(read.table(x))
x$colx <- xx
x$coly <- yy
return(x)
})
其中xx <-
和yy <-
線將根據任一pmatch或grep的查找。我正在玩耍,使任何一個工作,但會歡迎任何建議。
感謝約什。我在上面使用了你的解決方案,它的效果很好 – zach
@zach - 沒問題。爲了緊湊和可靠,您可能希望將所有計算放在一個for()循環中或調用lapply()。如果你使用'lapply()'路由,你需要通過指定'assign(「objectName」,object,envir = .GlobalEnv)''確保賦值進入全局環境。 –