Python 将函数从R转换为rpy2
你好我在R中使用了一个名为Python 将函数从R转换为rpy2,python,rpy2,Python,Rpy2,你好我在R中使用了一个名为stylo的软件包,用于测风(基本上是基于词法频率识别文学作者的机器学习),但我在Python中使用的是rpy2 在R中,我将执行以下操作: library(stylo) cosine.delta = function(x){ # z-scoring the input matrix of frequencies x = scale(x) # computing cosine dissimilarity
stylo
的软件包,用于测风(基本上是基于词法频率识别文学作者的机器学习),但我在Python中使用的是rpy2
在R中,我将执行以下操作:
library(stylo)
cosine.delta = function(x){
# z-scoring the input matrix of frequencies
x = scale(x)
# computing cosine dissimilarity
y = as.dist( x %*% t(x) / (sqrt(rowSums(x^2) %*% t(rowSums(x^2)))) )
# then, turning it into cosine similarity
z = 1 - y
# getting the results
return(z)
}
stylo(distance.measure="cosine.delta")
现在在Python中,我知道如何调用库和函数stylo
,但我不知道如何定义函数cosine.delta
。有什么想法吗?我尝试过这样的事情:
import rpy2.robjects as ro
R = ro.r
R.library("stylo")
cosinedelta = R.function(x){
# z-scoring the input matrix of frequencies
x = scale(x)
# computing cosine dissimilarity
y = as.dist( x %*% t(x) / (sqrt(rowSums(x^2) %*% t(rowSums(x^2)))) )
# then, turning it into cosine similarity
z = 1 - y
# getting the results
return(z)
}
R.stylo(distance.measure="cosinedelta")
它说{
是无效的语法。我一直在尝试不同的东西(其他类型的括号,使用
from rpy2.robjects.packages import importr
base = importr('base'))
但是什么都不管用我对R或rpy2
语法都不太了解…你可以通过rpy2
运行任何R代码,只需将它放在一个大字符串中,并将该字符串作为参数传递到R()
中。对于你来说,以下方法应该有效:
import rpy2.robjects as ro
R = ro.r
R.library("stylo")
R('''
cosinedelta <- function(x){
# z-scoring the input matrix of frequencies
x = scale(x)
# computing cosine dissimilarity
y = as.dist( x %*% t(x) / (sqrt(rowSums(x^2) %*% t(rowSums(x^2)))) )
# then, turning it into cosine similarity
z = 1 - y
# getting the results
return(z)
}
''')
R('stylo(distance.measure=\"cosinedelta\")')
将rpy2.robject作为ro导入
R=ro.R
R.图书馆(“stylo”)
R(“”)
余弦德尔塔