2013-04-10 3 views
1

Я новичок в программировании R. Я закодировал базовый R-скрипт, который позволяет пользователю выбрать CSV-файл с двумя столбцами (X и Y), построить график на графике, чтобы показать линейную регрессию, и напечатать связанное с rsquared значение отношения XY.Создание линейного регрессионного графика из .csv из R GUI

Может кто-нибудь объяснить основы добавления этого кода в gWidgets, чтобы у меня был GUI с двумя кнопками? - button1 будет file.choose(), чтобы выбрать CSV-файл (я видел этот код в другом месте), button2 будет запускать линейную регрессию и выводить график в окно дисплея.

Я прошел через все руководства по gWidgets и фрагменты кода, но мне все еще не ясно, как выполнить простую функцию, как я описал выше. Я думаю, я думал, что можно будет просто вырезать и вставить мой существующий код R в кнопку gWidgets, но теперь я вижу, что это не так.

Любая помощь будет принята с благодарностью.
С наилучшими пожеланиями

#CALCULATES LINEAR REGRESSION SCATTER PLOT FOR TWO COLUMNS - X and Y 
# ALSO PRINTS r2 VALUE ON PLOT 

#READ IN THE .CSV FILE - FILE SHOULD CONTAIN TWO COLUMNS WITH NO HEADER - X and Y 
#CREATE DATAFRAME 
test1 <- read.csv("C:/Data/test.csv", header=FALSE) 

#ASSIGN THE DATA IN EACH COLUMN TO A VARIABLE NAME 
X1 <- test1$V1 
Y1 <- test1$V2 

#PLOT DATA WITH APPROPRIATE LABELS 
plot(X1, Y1, xlab="X", ylab="Y") 

#CALCULATE THE BEST FIT LINE AND PRINT R2 VALUE ON PLOT 
abline(fit <- lm(X1 ~ Y1, data=test1), col='red') 
legend("topright", bty="n", legend=paste("r2 is", format(summary(fit)$adj.r.squared, digits=4))) 

ответ

1

Я думаю, вы ищете что-то простое, как:

library(gWidgets) 
options(guiToolkit="tcltk") ## or RGtk2 ... 

w <- gwindow("Your GUI", visible=FALSE) 
g <- ggroup(cont=w, horizontal=FALSE) 

upload <- gfilebrowse("Select a csv file", cont=g) 
btn <- gbutton("Do it", cont=g) 
enabled(btn) <- FALSE 

filename <- NULL 
do_it <- function(...) { 
    message("Read csv file in filename") 
    message("make graphic") 
    message("make summary") 
} 

addHandlerChanged(upload, handler=function(h, ...) { 
    val <- svalue(upload) 
    if(!is.na(val)) { 
    filename <<- val 
    enabled(btn) <- TRUE 
    } 
}) 
addHandlerChanged(btn, handler=do_it) 

visible(w) <- TRUE 
+1

Здравствуйте, Спасибо за это, это очень полезная структура для тех, кто начинает. Я до сих пор не понимаю, как я могу заменить сообщение, которое вы написали в функции, с запросом на построение данных XY. ура – user2224979