在使用Networkite进行RStudio编码时,在Python代码中使用R函数

2024-05-20 17:22:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个有趣的问题。使用reticulate可以在R中使用python函数。我还注意到,可以在python中使用简单的R函数。例如,如果我源代码是R代码:

library(reticulate)

# a vector in R
my_vec <- c("data engineering", "data science")

# a function in R
unique_words <- function(string) {
  unique(unlist(strsplit(string, " ")))
}

如果我在同一个项目中使用Python编码,我可以这样做:

my_list=r.my_vec
unique_words=r.unique_words

unique_words(my_list)

我得到了预期的结果:

['data', 'engineering', 'science']

然而,我试图做一些比这更复杂的事情。我想看看是否可以使用R中的MASS::polr()在Python中运行比例优势逻辑回归。我设置了我的R包,并创建了一个小函数来输出结果的数据帧:

library(MASS)
library(broom)

my_polr <- function(formula, data) {
  model <- polr(formula, data, Hess = TRUE)
  tidy(model)
}

然后我试着用Python在挑战者号航天飞机数据集上运行:

import pandas as pd

# get orings data
orings=pd.read_csv("https://raw.githubusercontent.com/keithmcnulty/logit_regression_training/main/orings.csv")

# make damage ordered category for my_polr
orings['damage'] = pd.Categorical(orings['damage'], ordered=True,
                   categories=[0, 1, 2, 3, 4, 5])

# run
my_polr = r.my_polr

my_polr('damage~temp', orings) 

但是,当我尝试此操作时,Python中没有发生任何事情。我想知道以前是否有人尝试过这个方法,以及为什么上面的简单函数似乎可以工作,但这一个不行


Tags: 函数indatamypolrlibraryfunctionpd