12. Attributes

  • ATTRIB
  • OBJECT
  • MARK
  • TYPEOF
  • NAMED
  • RTRACE
  • LEVELS

ポインタの構造体であるsxpinfoの要素にアクセスする。

引数は、ポインタ。

12.1. コード

#include <R.h>
#include <Rinternals.h>
#include <Rdefines.h>

SEXP check_attr(SEXP arg_p) {

    return ATTRIB(arg_p);
}
dyn.load("check_attr.so")

ca <- function(vec) {

    .Call("check_attr", vec)

}

num <- 1:6

attr(num, "dim") <- c(2, 3)

ca(num)
# $dim
# [1] 2 3

13. SET ATTRIBUTES系

  • SET_OBJECT
  • SET_TYPEOF
  • SET_NAMED
  • SET_RTRACE
  • SETLEVELS

ポインタの構造体であるsxpinfoの要素に、SEXPのタイプを代入する。

引数は、ポインタとSEXPTYPE。

13.1. コード

#include <R.h>
#include <Rinternals.h>
#include <Rdefines.h>

SEXP set_int(SEXP arg_p) {
    SET_TYPEOF(arg_p, INTSXP);

    return arg_p;
}
dyn.load("set_int.so")

set <- function(vec) {

    .Call("set_int",vec)

}

bool <- c(T, F, T)

set(bool)
# [1] 1 0 1

num <- 2

set(num)
# [1] 0