gpt4 book ai didi

python - 如何在 R 中重新获取 Python 变量?

转载 作者:太空宇宙 更新时间:2023-11-03 15:03:31 24 4
gpt4 key购买 nike

我脑子里有这个项目的想法,我正在尝试使用 Shiny 并与 Python 交互。为了看看它是否可以工作,我制作了这个简单的测试应用程序:

用户界面:

# UI

library(shiny)
library(shinydashboard)

### Dashboard sidebar erstellen
sidebar <- dashboardSidebar(

)

body <- dashboardBody(
fluidPage(

# infoboxen
valueBoxOutput("box1"),
infoBoxOutput("box2"),

# buttons
actionButton("but1", "Change Value 1 to TRUE"),
actionButton("but2", "Change Value 2 to TRUE"),
actionButton("but3", "Change Value 1 to FALSE"),
actionButton("but4", "Change Value 2 to FALSE")
)
)


# Hier kommt alles zusammen
shinyUi <- dashboardPage(skin = "blue",
dashboardHeader(title = "Python to R Test"),
sidebar,
body
)


服务器:

# Server für Test App
library(rPython)
library(shiny)
library(shinydashboard)

shinyServer <- function(input, output) {

# python scrip laden
python.load("python_script.py")

# python variable einer R variable zuweisen
rvar1 <- python.get("blink1")
rvar2 <- python.get("blink2")

# Buttons
observeEvent(input$but1, {
python.call("func1", bool1 = TRUE)
})

observeEvent(input$but2, {
python.call("func2", bool2 = TRUE)
})

observeEvent(input$but3, {
python.call("func1", bool1 = FALSE)
})

observeEvent(input$but4, {
python.call("func2", bool2 = FALSE)
})

# Infobox
output$box1 <- renderValueBox({
valueBox(rvar1, width = 3, icon = NULL, href = NULL, subtitle = "test", color = "green")
})
output$box2 <- renderInfoBox({
infoBox(rvar2, width = 3, "Status", subtitle = "test", color = "blue")
})
}


和 python 脚本 (python_script.py):

#!/usr/bin/python

# Script das eine Variable blinkt / Zweck: integration mir R

blink1 = 0
blink2 = 0

def func1(bool1):
if bool1 == True:
blink1 = 1
print blink1
else:
blink1 = 0
print blink1
return blink1

def func2(bool2):
if bool2 == True:
blink2 = 1
print blink2
else:
blink2 = 0
print blink2
return blink2

我的问题是 R 变量 rvar1 和 rvar2 没有从 0 更新到 1。如何让这些变量从 Python 脚本更新到眨眼 1 和眨眼 2 的相应值?是否可以使用 rPython 包?如果没有,关于如何做到这一点有什么建议吗?

谢谢!

最佳答案

在 Python 中仍然需要 return,只需将 python.call() 分配给 rvars:

# Buttons
observeEvent(input$but1, {
rvar1 <- python.call("func1", TRUE)
})

observeEvent(input$but2, {
rvar2 <- python.call("func2", TRUE)
})

observeEvent(input$but3, {
rvar1 <- python.call("func1", FALSE)
})

observeEvent(input$but4, {
rvar2 <- python.call("func2", FALSE)
})
...

关于python - 如何在 R 中重新获取 Python 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44861980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com