我有一個也許是基本的問題,我已經在網上搜索。我有一個閱讀文件的問題。雖然,我設法讀取我的文件,遵循@Konrad的建議,我很感激:如何讓R從一個大目錄下的多個子目錄中讀取文件?使用sapply的列表和矩陣
這是一個類似的問題,但是,我沒有解決它。
我的問題:
我有一大批具有相同名稱的不同文件夾中(「tempo.out」)的文件。這tempo.out有5列/標題。而且他們都具有1048行5列的格式相同:
ID XY時間溫度
setwd("~/Documents/ewat")
dat.files <- list.files(path="./ress",
recursive=T,
pattern="tempo.out"
,full.names=T)
readDatFile <- function(f) {
dat.fl <- read.table(f)
}
data.filesf <- sapply(dat.files, readDatFile)
# I might not have the right sintax in sub5:
subs5 <- sapply(data.filesf,`[`,5)
matr5 <- do.call(rbind, subs5)
probs <- c(0.05,0.1,0.16,0.25,0.5,0.75,0.84,0.90,0.95,0.99)
q <- rowQuantiles(matr5, probs=probs)
print(q)
我想提取每個那些數以千計的文件中的第五列(臨時),並計算這樣的作爲分位數。
我第一次嘗試閱讀「RESS」
後者沒有給出錯誤,所有子文件的,但我的主要問題是「data.filesf」不是一個矩陣,但名單,居然第5列不我所期望的。然後如下:
matr5 <- do.call(rbind, subs5)
也沒有給出所需的值/結果。
什麼可能是最好的方式來獲得列將成爲一個巨大的矩陣?
鋒線:我建議要麼你'sapply(...,簡化= FALSE)'或使用'lapply',否則這是一個有點脆弱。例如,如果你傳遞一個2個文件名的向量,它應該返回一個*'list' *,在這種情況下,你可以用'data.filesf [[1]]'符號訪問每個文件。然而,如果運氣不好,你的文件名列表只有一個long,那麼'sapply'(no simplification = FALSE)將返回一個單一的矩陣或data.frame,data.filesf [[1]]會顯着沒有做你期望的事情。 – r2evans
我已經把自己弄糊塗了......請給出一些樣本輸入(例如,重複兩次的虛擬3x3數據框)和預期的輸出。 – r2evans