A for
петля кажется здесь уместной. Это решение предполагает, что ваши данные находятся в одном каталоге, а ваши результаты должны быть размещены в другом. Однако они могут находиться в одном каталоге. В этом решении p-значения из теста Крускала-Уоллиса и p-значения из попарного теста Уилкоксона объединяются в одну таблицу, которая будет сохранена в виде файла Excel.
Если вы заинтересованы в консолидации результатов, вы можете использовать опцию sheetName
в write.xlsx()
, чтобы создать один файл Excel с несколькими листами.
В этом примере вам (конечно) необходимо заменить заполнитель "<...>
" соответствующими параметрами для вашей ситуации.
# Define directories of data and results
dataPath <- <directory with flow data>
resultsPath <- <directory for results>
# Vector of file names; a pattern for old and new Excel files is "xlsx?$"
ff <- list.files(path = dataPath, pattern = "<pattern>", full = TRUE)
# Good old fashioned for loop
for (f in ff) {
data <- read.xslx(f, <other parameters>) # edit as required
pv1 <- apply(data[-1], 2, function(x) kruskal.test(x, data$Type)$p.value)
pv1 <- t(pv1) # transpose 3 x 1 result to 1 x 3
pv2 <- apply(data[-1], 2, function(x) pairwise.wilcox.test(x, data$Type,
p.adjust.method = "BH")$p.value)
pv2 <- na.omit(pv2)
ans <- rbind(pv1, pv2)
rownames(ans) <- c("Pval", "HC vs In", "HC vs OUT", "IN vs OUT")
fout <- file.path(resultsPath, paste("RESULTS", basename(f), sep = "_"))
write.xlsx(ans, fout, rowNames = TRUE)
}
EDIT
Относительно переменных-заполнителей "<...>
":
Для каталогов это просто расположение файлов. Например, если для каждого эксперимента должен использоваться один каталог, данные и результаты могут храниться в одном и том же каталоге. На компьютере с Windows это может быть что-то вроде "C:\Users\Owner\Documents\Flow Analysis\2019_0512"
. И dataPath
, и resultsPath
будут установлены на это значение. Кстати, вы можете использовать следующий код для извлечения каталога данных, содержащего выбранный вами файл. Функция file.choose()
позволяет выбрать файл в обычном диалоговом окне операционной системы.
dataPath <- dirname(file.choose())
Для функции list.files()
см. Справочную функцию для list.files
(или dir
). Параметр pattern
указывает регулярное выражение, которое можно использовать для выбора только файлов данных. Например, если шесть файлов данных выглядят как «FlowFile001.xlsx», «FlowFile002.xlsx», ..., «FlowFile006.xlsx», то шаблон регулярного выражения , который определяет эти файлы, может быть «Flow» . * XLSX $». (Посмотрите regex
, чтобы узнать о мире регулярных выражений, если это незнакомо.)
Параметры read.xslx()
зависят от структуры ваших данных в файле Excel. Это может, например, включать пропуск пустых строк с skipEmptyRows = TRUE
.