2013-12-09 126 views
1

我正在創建一個使用Tcltk包的GUI,我想知道是否有重命名我正在導入的數據集的方法。基本上,我希望用戶爲他輸入的數據集選擇一個名稱,但是我的代碼並不是這樣給我的。我試圖做的是與RStudio在導入文件時所做的相同的概念。 有人能指引我走向正確的方向嗎?R重命名數據集

預先感謝您!

require(tcltk) 
tt <- tktoplevel() 
tkwm.title(tt, "Read Text Data") 
dsName <- tclVar("Dataset") 
entry.Name <-tkentry(tt,width="20",textvariable=dsName) 
entry.box <- tklabel(tt,text="Please enter dataset name:") 
tkgrid(entry.box, entry.Name) 
tkgrid(tklabel(tt,text="")) 

onOk <- function() 
{ 
    myval <- tclvalue(tkgetOpenFile()) 
    myData <<- read.table(myval, header=TRUE, sep=",", dec = ".") 
} 

OK.but <- tkbutton(tt,text=" Import ",command=onOk) 
Qt.but <- tkbutton(tt,text=" Cancel ",command=function()tkdestroy(tt)) 
tkgrid(OK.but, Qt.but) 
tkfocus(tt) 

回答

2

而是這行:

myData <<- read.table(myval, header=TRUE, sep=",", dec = ".") 

試着這麼做:

myData <- read.table(myval, header=TRUE, sep=",", dec = ".") 
assign(tclvalue(dsName), myData, envir = .GlobalEnv) 

雖然你可能想使envir = .GlobalEnv別的東西(如果你打算把這個CRAN ,您不能以這種方式分配到全局環境,而必須使用用戶創建的環境)。

其他一些注意事項:

  1. 你可能想在你的onOK函數結束時tkdestroy電話。
  2. 您可能想添加一個邏輯來檢查用戶是否實際上爲數據集提供了一個名稱,當他們按下OK時。
+0

謝謝托馬斯的回答和建議!我會嘗試的! – user2993749

+0

你給我看的程序工作得很好,再次感謝你。但現在,我還有一個問題。我之所以要這樣做,是因爲我創建了一個UI,所以會調用另一個函數,例如摘要。現在的問題是因爲用戶可以選擇他們的數據集名稱,現在我的彙總功能不再起作用,因爲它被「設置」爲另一個名稱。我該如何解決這個問題? – user2993749

+0

看看'get',看看'summary(get(tclvalue(dsName)))''。 – Thomas