【发布时间】:2014-04-10 23:39:25
【问题描述】:
我想将 R 脚本文件读入 Python(使用 Tkinter GUI 包)并更改一些变量(或者只是打印并使用它们),然后将这些变量重新保存回 R 脚本文件。我正在查看 Rpy2 模块,但我没有看到任何可以帮助我完成它的东西。我要更改的变量是字符串和数字变量(在 R 中)。
例如:
R 脚本包含:
eventtime<-"18:30:00"
eventdate<-"2014-02-28"
Python 文件:
import Tkinter as tk
from rpy2.robjects import r
class GUI(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master, width=300, height=200)
self.master = master
self.master.title('GUI')
self.pack_propagate(0)
self.pack()
self.run_button = tk.Button(self, text='Run', command=self.evaluate)
self.run_button.pack(fill=tk.X, side=tk.BOTTOM)
self.entrybox_frame = tk.Frame(self)
self.entrybox_frame.pack(anchor=tk.S, pady=5)
self.eventtime_var = tk.StringVar()
self.eventtime = tk.Entry(self.entrybox_frame, textvariable=self.eventtime_var)
self.eventdate_var = tk.StringVar()
self.eventdate = tk.Entry(self.entrybox_frame, textvariable=self.eventdate_var)
self.eventtime.grid(row=0, column=1)
self.eventdate.grid(row=1, column=1)
def evaluate(self):
# Clicking the Run button will save the variables to the R script
r.source('file.r')
self.get_event_info()
def run(self):
self.mainloop()
def get_event_info(self):
# Get the user input and write them to the R variables
# So first must read the R script into python, then rewrite over those variables
# Then save the R script
print self.eventtime_var.get()
print self.eventdate_var.get()
gui = GUI(tk.Tk())
gui.run()
有什么想法吗?
【问题讨论】:
-
没有示例很难帮助您?为什么不在 R 中这样做?
-
所以本质上我正在使用 Tkinter 创建一个 GUI,用户在其中输入一些变量,我想将这些变量保存到 R 脚本,然后调用 rpy2.robjects.r.source('filename ') 在 Python 中,它执行另一组操作。
-
请添加您的脚本示例和您要更改的变量。
-
在我看来,您重写的目的是调整变量并再次运行 R 脚本,对吗?为什么不使用带有位置参数的 Rscript 解释脚本作为变量?
-
是的,这是正确的。我不确定你对 Rscript 的意思。