将R脚本与Python集成 - 加载包时出错

时间:2016-06-28 07:12:28

标签: python r user-interface

(抱歉有问题的格式不好)

我正在尝试用我的情感分析程序在Python中创建一个用R编码的GUI。它看起来如下。

#!/usr/bin/python
from os import *
from subprocess import *
from tkinter import *

class Application(Frame):
    #A GUI Application

    def __init__(self,master):
        #Initialise the frame
        Frame.__init__(self,master)
        self.grid()
        self.create_widgets()

    def create_widgets(self):
        #Create the Sentiment Analysis GUI
        #required to display whatever grid we have prepared?
        self.label=Label(self,text="Welcome to Sentiment Analysis GUI!")
        self.label.grid()

        #Get Tweets
        self.stream=Button(self,text="Stream the tweets",command=self.runprogram)
        self.search=Button(self,text="Search the tweets",command=self.runr)
        self.stream.grid()
        self.search.grid()


        #Manually classify the tweets
        self.label_tweets=Button(self,text="Label the tweets")
        self.label_tweets.grid()
        #try and put select how many to label
        #save these labels along with topic


        #train button
        self.train=Button(self,text="Train_the_system")
        self.train.grid()

        #"classify the rest" button
        self.classify=Button(self,text="Classify the rest of tweets")
        self.classify.grid()

        #Demographic Analysis
        self.demographic=Button(self,text="Do the Demographic Analysis")
        self.demographic.grid()

    def runprogram(self):
        #system("python try.py")
        chmod(r'E:\OneDrive\Interns\project\twitter',0o777)
        system(r"Rscript E:\OneDrive\Interns\project\twitter\products_vape.R")

    #this is not required
    def runr(self):
        command=Rscript
        path2script='E:\OneDrive\Interns\project\twitter\products_vape.R'
        cmd=[command,path2script]
        #call(cmd,shell=True)
        x=check_output(cmd,universal_newlines=True,shell=True)
        #print('abc',x)

root=Tk()
root.title("Sentiment Analysis")
root.geometry("500x200")

app=Application(root)

root.mainloop()

在这段代码中,我为各种操作创建了按钮,例如“训练系统”,“标记推文” - 这都是不言自明的。

我尝试了两个版本试图在self.stream和self.search中运行我的rcode。 runr完全没有工作 - “名称Rscript未定义”是被抛出的错误。 虽然runprogram工作但无法加载任何库。 products_vape.R的rcode如下:

library(RMySQL)
library(DBI)
library(RJSONIO)
library(streamR)
library(stringr)
library(rjson)
load("C:\\Users\\Invincibles\\Documents\\cred.Rdata")
tweets<-filterStream( file.name="vape and ecigs.json",language="en",track=c("Vape","Vaping","e-cigarette","e-cig","ecigarette","ecig","e cig","e cigarette"), oauth=cred,verbose = TRUE)


vapes <- parseTweets("vapes and ecigs.json", simplify = FALSE)
tweets.filter <- tweets.df[ which(tweets.df$country_code=="IN"), ]

单击流推送按钮的错误是 “库中的错误(RMySQL):没有名为'RMySQL'的程序包”

只是为了记录,当我在命令窗口或RStudio中使用Rscript运行时,此代码运行完美。

我已尝试将库更改为require,但存在类似错误。

在单独但相关的说明中,是否可以通过将每个按钮与R文件集成来实现此目的?

例如,我要求在“人口统计分析”按钮中弹出带有热图等的RMaps地图?

1 个答案:

答案 0 :(得分:0)

对于各种环境,当使用Python的专用包调用R脚本时,Python端可能无法完全识别库路径。

要解决此问题,请尝试将.libPaths()置于R中的代码顶部以明确定义位置:

.libPaths("dir/to/package")

library(RMySQL)
library(DBI)
library(RJSONIO)
library(streamR)
library(stringr)
library(rjson)
...

或者,使用默认为lib.loc的{​​{1}}参数,并使用NULL中设置的库树:

.libPaths()