Python 如何使用R';rpy2中的s赋值方法?

Python 如何使用R';rpy2中的s赋值方法?,python,r,rpy2,Python,R,Rpy2,我正在使用rpy2,我需要在R对象上使用赋值方法。例如,从该对象开始: # Python code from rpy2.robjects import r myvar = r('c(a=1,b=2,c=3)') 假设我想分配给名称(myvar)。(注意:忽略以下事实:rpy2提供了一种通过myvar.names访问名称的替代方法。这只适用于名称,而不适用于任意赋值方法。)在R中,我将执行以下操作: # R code names(myvar) <- c("x", "y", "z") #R

我正在使用rpy2,我需要在R对象上使用赋值方法。例如,从该对象开始:

# Python code
from rpy2.robjects import r
myvar = r('c(a=1,b=2,c=3)')
假设我想分配给
名称(myvar)
。(注意:忽略以下事实:rpy2提供了一种通过
myvar.names
访问名称的替代方法。这只适用于名称,而不适用于任意赋值方法。)在R中,我将执行以下操作:

# R code
names(myvar) <- c("x", "y", "z")
#R代码

名称(myvar)在R中,“setter”函数遵循一种命名约定,即“getter”的名称后跟
“name”考虑导入R的基本包,并直接使用
c()
函数和分配名称导入R的stats包并直接使用
setNames()
函数。下面显示了使用
r()
base.c()
赋值如何产生等效值:

from rpy2.robjects import r
from rpy2.robjects.packages import importr

base = importr('base')

myvar1 = r("c('x','y','z')")
myvar2 = base.c('x', 'y', 'z')

# SAME CLASS TYPE
print(type(myvar1))
# <class 'rpy2.robjects.vectors.StrVector'>
print(type(myvar2))
# <class 'rpy2.robjects.vectors.StrVector'>

from rpy2.robjects import pandas2ri
pandas2ri.activate()

# CONVERT TO PYTHON NUMPY ARRAY
py_myvar1 = pandas2ri.ri2py(myvar1)
py_myvar2 = pandas2ri.ri2py(myvar2)

print(py_myvar1==py_myvar2)
# [ True  True  True]

print(py_myvar1)
# ['x' 'y' 'z']
print(py_myvar2)
# ['x' 'y' 'z']
从rpy2.robjects导入r
从rpy2.robjects.packages导入导入
base=importr('base')
myvar1=r(“c('x','y','z'))
myvar2=base.c('x','y','z')
#同类
打印(类型(myvar1))
# 
打印(类型(myvar2))
# 
从rpy2.robject导入pandas2ri
pandas2ri.activate()
#转换为PYTHON NUMPY数组
py_myvar1=pandas2ri.ri2py(myvar1)
py_myvar2=pandas2ri.ri2py(myvar2)
打印(py_myvar1==py_myvar2)
#[对]
打印(py_myvar1)
#['x''y''z']
打印(py_myvar2)
#['x''y''z']
以及使用名称和值的输出向量分配名称:

stats = importr('stats')
# EQUIVALENT TO R: myvar <- setNames(c('a', 'b', 'c'), c(1,2,3))
myvar3 = stats.setNames(base.c(1,2,3), base.c('a', 'b', 'c'))

print(type(myvar3))
# <class 'rpy2.robjects.vectors.IntVector'>

# NAME VECTOR
py_myvar3 = pandas2ri.ri2py(base.names(myvar3))
print(py_myvar3)
# ['a' 'b' 'c']

# VALUES VECTOR
py_myvar3 = pandas2ri.ri2py(myvar3)
print(py_myvar3)
# [1 2 3]
stats=importr('stats'))

#与R:myvar等效,这适用于名称,但不适用于任意setter函数。我希望能想到一个简单的例子,其中涉及的setter不是
名称
from rpy2.robjects import r
from rpy2.robjects.packages import importr

base = importr('base')

myvar1 = r("c('x','y','z')")
myvar2 = base.c('x', 'y', 'z')

# SAME CLASS TYPE
print(type(myvar1))
# <class 'rpy2.robjects.vectors.StrVector'>
print(type(myvar2))
# <class 'rpy2.robjects.vectors.StrVector'>

from rpy2.robjects import pandas2ri
pandas2ri.activate()

# CONVERT TO PYTHON NUMPY ARRAY
py_myvar1 = pandas2ri.ri2py(myvar1)
py_myvar2 = pandas2ri.ri2py(myvar2)

print(py_myvar1==py_myvar2)
# [ True  True  True]

print(py_myvar1)
# ['x' 'y' 'z']
print(py_myvar2)
# ['x' 'y' 'z']
stats = importr('stats')
# EQUIVALENT TO R: myvar <- setNames(c('a', 'b', 'c'), c(1,2,3))
myvar3 = stats.setNames(base.c(1,2,3), base.c('a', 'b', 'c'))

print(type(myvar3))
# <class 'rpy2.robjects.vectors.IntVector'>

# NAME VECTOR
py_myvar3 = pandas2ri.ri2py(base.names(myvar3))
print(py_myvar3)
# ['a' 'b' 'c']

# VALUES VECTOR
py_myvar3 = pandas2ri.ri2py(myvar3)
print(py_myvar3)
# [1 2 3]