Is there a way to access the column names of the R data frame in python / rpy2?

I have an R data frame stored in Database02.Rda. Download it

import rpy2.robjects as robjects
robjects.r.load("Database02.Rda")

works great. However:

print(robjects.r.names("df"))

gives

NULL

Also, as an example, column 214 (213, counted starting at 0), is called REGION.

print(robjects.r.table(robjects.r["df"][213]))

works great:

Region 1   Region 2   ...
    9811       3451   ...

but we must also be able to do

print(robjects.r.table("df$REGION"))

This, however, leads to

df$REGION 
        1

(which also applies to column names that do not exist at all); also:

print(robjects.r.table(robjects.r["df"]["REGION"]))

gives an error:

TypeError: SexpVector indices must be integers, not str

docs , python. , , python/rpy2? , - dict python, ? . ?

R, python, rpy2, : R: 3.2.2 python: 3.5.0 rpy2: 2.7.8

+4
2

Database02.Rda R ".

import rpy2.robjects as robjects
robjects.r.load("Database02.Rda")

robjects.globalenv Environement.

tuple(robjects.globalenv.keys())

, df. :

df = robjects.globalenv['df']

df - , rx2 ( - ). , REGION, do:

df.rx2("REGION")

dataframe :

tuple(df.names) 
+2

R python, . @lgautier / . R $. , :

print(pamk_clusters$pamobject$clusinfo)

,

print(pamk_clusters[["pamobject"]][["clusinfo"]])

... , ""

http://rpy2.readthedocs.io/en/version_2.7.x/vector.html#extracting-r-style

/ R- , rx rx2, R- [ [[.

print(pamk_clusters.rx2("pamobject").rx2("clusinfo"))

:

https://bitbucket.org/rpy2/rpy2/issues/436/acessing-dataframe-elements-using-rpy2

rpy2 Win7 ipython. , , , , :

import rpy2
import rpy2.robjects as robjects
import rpy2.robjects.packages as rpackages
from rpy2.robjects.packages import importr

base = importr('base')
utils = importr('utils')
utils.chooseCRANmirror(ind=1)

cluster = importr('cluster')
stats = importr('stats')
#utils.install_packages("fpc")
fpc = importr('fpc')

import pickle
with open ('points', 'rb') as fp:
    points = pickle.load(fp) 
# data above is stored as binary object
# online:  http://www.mshaffer.com/arizona/dissertation/points

import rpy2.robjects.numpy2ri as npr   
npr.activate()

k = robjects.IntVector(range(3, 8))   # r-syntax  3:7   # I expect 5
pamk_clusters = fpc.pamk(points,k)

print( base.summary(pamk_clusters) )
base.print( base.summary(pamk_clusters) )

utils.str(pamk_clusters)

print(pamk_clusters$pamobject$clusinfo)
base.print(pamk_clusters$pamobject$clusinfo)

print(pamk_clusters[["pamobject"]][["clusinfo"]])
print(pamk_clusters.rx2("pamobject").rx2("clusinfo"))

pam_clusters = cluster.pam(points,5)        # much slower
kmeans_clusters = stats.kmeans(points,5)    # much faster

utils.str(kmeans_clusters)

print(kmeans_clusters.rx2("cluster"))

R 25 , S, . https://en.wikipedia.org/wiki/R_(programming_language)

@lgautier, , R Python

0

All Articles