在Python中更改R脚本变量,然后保存回R脚本
我想把一个R脚本文件读到Python里(使用Tkinter这个图形界面包),然后修改一些变量(或者只是打印出来玩玩),最后再把这些变量保存回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()
有什么好主意吗?
2 个回答
0
rpy2
提供了一种更好的方法来处理 R 脚本,它可以把 R 脚本封装在 Python 的命名空间中,同时在 R 的环境中也进行封装。
可以查看 rpy2 文档中相关的部分。