python - 是否可以在 R 脚本中集成 python 函数?
问题描述
我已经定义了一个 python 函数,我想将它集成到 R 中,这可能吗?
这是我要集成的python代码:
def set_priority_py(overlap,Priority,IEC_category):
import pandas as pd
import numpy as np
import math as m
#priority = (3,2,1,4,5,6,7)
#category = ("a","b","c","d","e","f","g")
#overlap = (float('NaN'),1,1,1,0,1,1)
priority = Priority
category = IEC_category
#overlap = overlap
data = pd.DataFrame({'priority':priority,'category':category,'overlap':overlap})
data['new'] = np.nan
data['new2'] = np.nan
#rest = []
data['rest'] = ""
for i in range(1, len(data)):
if data.overlap.loc[i] == True:
if data.priority.loc[i]<= (data.priority.loc[i-1] if m.isnan(data.new.loc[i-1]) else data.new.loc[i-1]):
data.new.loc[i] = data.priority.loc[i]
data.new2.loc[i] = data.category.loc[i]
#rest.append(data.category[i-1])
#data.rest[i] = rest
data.rest.loc[i] = ''.join([str(data.rest.loc[i-1]),',',str(data.category.loc[i-1])])
else:
data.new.loc[i] = data.priority.loc[i-1]
data.new2.loc[i] = data.category.loc[i-1]
#rest.append(data.category[i])
#data.rest[i] = rest
data.rest.loc[i] = ''.join([str(data.rest.loc[i-1]),',',str(data.category.loc[i])])
data.rest = data.rest.str[1:]
return data
随机数据帧的结果是:
priority category overlap new new2 rest
0 3 a NaN NaN NaN
1 2 b 1.0 2.0 b a
2 1 c 1.0 1.0 c a,b
3 4 d 1.0 1.0 c a,b,d
4 5 e 0.0 NaN NaN
5 6 f 1.0 5.0 e f
6 7 g 1.0 6.0 f f,g
是否可以创建一个在 R 中工作的函数?我试图将它与“网状”包集成,但我的程序崩溃了。
这是代码,当我执行第二行 RStudio 崩溃时。
source_python("set_priority_py.py")
set_priority(overlap,Priority,IEC_category)
编辑
该代码适用于本示例中创建的 20 个随机样本:
overlap <- as.logical(sample(c(0,1),size=20, replace = TRUE))
Priority<- sample(c(0,1,2,3,4,5,6,7),size=20, replace = TRUE)
IEC_category<-sample(c("a","b","c","d","e","f","g","h"),size=20, replace = TRUE)
source_python("set_priority_py.py")
set_priority(overlap,Priority,IEC_category)
解决方案
R的reticulate
包应该可以解决您的问题。
您可以创建一个 python 脚本文件,例如调用它useful_function.py
并包含在其中
def useful_function(x):
return x *2
然后在 R 中,您可以简单地将函数加载到您的工作区
library(reticulate)
use_python("/path/to/your/python/interpreter")
# source the created python script
source_python("useful_function.py")
result <- useful_function(2)
print(result)
如果您在使用 reticulate 和您的代码时遇到其他问题,您可以在此处发布错误消息,以便我们更好地帮助您。
推荐阅读
- ios - 使用 UIGraphicsGetImageFromCurrentImageContext 的 Swift 截图图像分辨率不好
- node.js - 使用 observable-mongo 插入后无法获取 ObjectId
- python-3.x - 将谷歌存储桶中的所有 .csv 文件读取到一个大熊猫 df 中,然后以 .csv 格式保存到另一个桶中
- android - 如何使用原生 Android 制作类似 Instagram Story 的布局?
- google-chrome-devtools - 如何在 Chrome 开发人员工具 - 应用程序选项卡中删除预览面板?
- java - 文件已上传但未在 Firebase 实时数据库中显示 - Android Studio
- powerbi - 如何根据时间段更改我的计算
- node.js - 在 .env 文件中使用插值
- html - 如何在 Visual Composer 中使用选项卡标题部分中的图像创建可切换选项卡?
- php - 在 Wordpress 上提交表单后重定向到 Homeurl