Exemple #1
0
 def __getitem__(self, i: int) -> typing.Union[int, 'IntSexpVector']:
     cdata = self.__sexp__._cdata
     if isinstance(i, int):
         i_c = _rinterface._python_index_to_c(cdata, i)
         res = openrlib.INTEGER_ELT(cdata, i_c)
         if res == NA_Integer:
             res = NA_Integer
     elif isinstance(i, slice):
         res = type(self).from_iterable([
             openrlib.INTEGER_ELT(cdata, i_c)
             for i_c in range(*i.indices(len(self)))
         ])
     else:
         raise TypeError('Indices must be integers or slices, not %s' %
                         type(i))
     return res
Exemple #2
0
def getshape(cdata, rk: typing.Optional[int] = None) -> typing.Tuple[int, ...]:
    if rk is None:
        rk = getrank(cdata)
    dim_cdata = openrlib.rlib.Rf_getAttrib(cdata, openrlib.rlib.R_DimSymbol)
    shape = [
        None,
    ] * rk
    if dim_cdata == openrlib.rlib.R_NilValue:
        shape[0] = openrlib.rlib.Rf_length(cdata)
    else:
        for i in range(rk):
            shape[i] = openrlib.INTEGER_ELT(dim_cdata, i)
    return tuple(shape)
Exemple #3
0
def getshape(cdata, rk: typing.Optional[int] = None) -> typing.Tuple[int, ...]:
    if rk is None:
        rk = getrank(cdata)
    dim_cdata = openrlib.rlib.Rf_getAttrib(cdata, openrlib.rlib.R_DimSymbol)

    shape: typing.Tuple[int, ...]
    if dim_cdata == openrlib.rlib.R_NilValue:
        shape = (openrlib.rlib.Rf_length(cdata), )
    else:
        _ = []
        for i in range(rk):
            _.append(openrlib.INTEGER_ELT(dim_cdata, i))
        shape = tuple(_)
    return shape
Exemple #4
0
def test_get_integer_elt_fallback():
    rpy2.rinterface.initr()
    v = rpy2.rinterface.IntSexpVector([1, 2, 3])
    assert (openrlib.INTEGER_ELT(v.__sexp__._cdata, 1) \
            == \
            openrlib._get_integer_elt_fallback(v.__sexp__._cdata, 1))