Я пытаюсь создать графический интерфейс (впервые, так что это очень непростой вопрос) для выполнения ряда простых задач:
- чтение всех файлов csv в папке
- применить фильтр нижних частот (например)
- экспортировать результаты в CSV-файл, содержащий исходные данные и отфильтрованные
Я сделал кодирование для всехпроцесс в R, но у меня возникли проблемы с переводом его в графический интерфейс. Я пытаюсь gWindget2 и после "Программирование графических интерфейсов пользователя в R" смог прочитать файлы, но я не совсем понимаю, как использовать ввод интерфейса для анализа, а затем экспортировать.
Этокод R для анализа:
library(dplyr)
library(tools)
library(tidyr)
library(signal)
datafiles <- list.files("FilesData", pattern="*.csv", full.names=TRUE)
df = tibble(File = datafiles) %>%
mutate(Data = lapply(File, read.csv), Name=file_path_sans_ext(basename(File))) %>%
unnest(Data) %>%
select(-File)
df$date <- as.POSIXct(df$date)
order <- 1
sensitivity <- 0.2
bf <- butter(order,sensitivity)
for(var in unique(df$Name)){
dfvar <- subset(df, df$Name==var)
dfvar$LPmin <- filtfilt(bf,(dfvar$min))
dfvar$LPmax <- filtfilt(bf,(dfvar$max))
if(exists("df2")){
df2 <- rbind.data.frame(df2, dfvar)
}
if(!exists("df2")){
df2 <- data.frame(dfvar)
}
rm(var, dfvar)
}
for(var in unique(df2$Name)){
dfvar <- subset(df2, df2$Name==var)
write.csv(dfvar, paste("./Result/",var,"Filtered.csv",sep=""), row.names = FALSE)
rm(dfvar, var)
}
Код GUI (что я пробовал до сих пор ...)
require(gWidgets2)
options(guiToolkit="RGtk2")
window <- gwindow("File search",visible=FALSE)
paned <- gpanedgroup(cont=window)
group <- ggroup(cont=paned,horizontal=FALSE)
glabel("Search for (filename):",cont=group,anchor=c(1,0))
txt_pattern <- gedit("",initial.msg="*.csv",cont=group)
glabel("Search in:",cont=group,anchor=c(1 , 0 ))
start_dir <- gfilebrowse(text="Select a directory ...",quote=FALSE,type="selectdir",cont=group)
search_button <- gbutton("Search",cont=group,handler=function(h, ...){
pattern <- glob2rx(svalue(h$action$txt) )
file_names <- dir(svalue(h$action$dir),
pattern,recursive=TRUE)
if(length(file_names))
svalue(h$action$results)<- file_names
else
galert("No matching files found",parent=w)},
action=list(txt=txt_pattern,dir=start_dir,results=search_results)
)
addSpring(group)
frame <- gframe("Output:",cont=paned,horizontal=FALSE)
search_results <- gtext("",cont=frame,expand=TRUE)
size(search_results)<- c(350 , 200)
addHandlerChanged(search_button,handler=function(h, ...){
pattern <- glob2rx(svalue(txt_pattern))
file_names <- dir(svalue(start_dir),pattern,recursive=TRUE)
if(length(file_names))
svalue(search_results)<- file_names
else
galert("No matching files found",parent=window)
})
visible(window)<- TRUE
С кодом выше я могу загружать файлыиз папки (поиск файлов «* .csv») на панели «Вывод», но я не знаю, как использовать этот ввод для анализа с помощью кода R. Выше.
Извините, есливопрос простой, но я буду признателен за любую помощь!