我創建了一個 R 腳本來分析和操作 2 個不同的資料框擴展名,例如,一項任務是從資料中提取某些值并將其匯出為 .txt 檔案,這是我的腳本和我使用的資料檔案的開頭:
setwd('C:\\Users\\Zack\\Documents\\RScripts\***')
heat_data="***.heat"
time ="***.timestamp"
ts_heat = read.table(heat_data)
ts_heat = ts_heat[-1,]
rownames(ts_heat) <- NULL
ts_time = read.table(time)
back_heat = subset(ts_heat, V3 == 'H')
back_time = ts_time$V1
library(data.table)
datDT[, newcol := fcoalesce(
nafill(fifelse(track == "H", back_time, NA_real_), type = "locf"),
0)]
last_heat = subset(ts_heat, V3 == 'H')
last_time = last_heat$newcol
x = back_time - last_heat
dataest = data.frame(back_time , x)
write_tsv(dataestimation, file="dataestimation.txt")
我比使用這 2 個檔案來計算和提取特定值。所以任何人都可以告訴我如何在每個 .heat 和 .timestamp 檔案上運行這個腳本。我的目標是計算和提取每個檔案的這些值。我注意到每個檔案都包含 .heat 和 .timestamp。我還注意到我是 Windows 用戶。
感謝您的幫助
uj5u.com熱心網友回復:
您可以使用 list.files
heat_data <- list.files(pattern = ".*.heat")
time <- list.files(pattern = ".*.timestamp")
然后回圈處理每個檔案(或使用lapply)
for (i in heat_data) {
h <- read.table(i)
# other code
}
for (j in time) {
t <- read.table(j)
# other code
}
您可能還想將路徑傳遞給list.files,而不是使用setwd:
heat_data <- list.files("your/path/", pattern = ".*.heat")
編輯問題后
假設您的路徑中有 3 個.heat檔案和 3 個.timestamp檔案
1.heat
2.heat
3.heat
1.timestamp
2.timestamp
3.timestamp
所以在heat和之間有對應關系timestamp(由檔案名給出)。
你可以閱讀這些檔案
heat_data <- list.files("your/path/", pattern = ".*.heat")
time <- list.files("your/path/", pattern = ".*.timestamp")
此時,創建一個完全符合您要求的函式。此函式僅將索引和兩條路徑作為輸入
function (i, heat_data, time) {
ts_heat <- read.table (heat_data[i])
ts_time <- read.table (time[i])
#
# other code
#
write_tsv(dataestimation, file = paste ("dataestimation", i, ".txt", sep = ""))
}
這樣,您將擁有名為dataestimation_1.txt,dataestimation_2.txt和dataestimation_3.txt.
最后用于lapply為檔案夾中的所有檔案呼叫該函式
lapply (1: 3, heat_data, time)
這只是進行的可能方式之一。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/339999.html
