来源于<<R Internals>>
较有用的中文网址:http://www.biosino.org/R/R-doc/
1. R Interal Structures
(1)SEXPs
(2)SEXPTYPEs
atomic vector types:LGLSXP,INISXP,REALSXP,CPLXSP,STRSXP and RAWSXP
Lists:VECSXP
names(symbols): SYMSXP
Pairlists:LISTSXP
Character:CHARSXP
Language objects:LANGSXP
Expressions:EXPRSXP
FUNSXP:CLOSXP、SPECIALSXP、BUILTINSXP
SEXPTYPE S4SXP:S4 objects
(3)sxpinfo header
debug :(closures and environments)
closures: debug() undebug() fn的调用是在browser中
environments:browsing是否是单步模式
trace:trace()function
tracemem() objects
spare:closures 用于一次debugging
named:SET_NAMED and NAMED macros
(4)the 'data'
(5)Search Path
environments有enclosures,在frame中search path,然后是frame中的enclosure
search path描述的是environment chain
(6)Namespaces
namespaces是与packages有关的environments
一个有namespace的pkg的package定义了两个environments:namespace:pkg(可以被attached,构成search path)和package:pkg
package:pkg是由namespace:pkg环境中的symbols来populated
global environment:the enclosure of the base namespace
R_BaseNamespace
ENVSXP
(7)Hash table
R中的environments都有一个hash table,默认的是new.env()
(8)Attributes
每一个SEXPREC都有一个指向node 的attributes的pointer
attributes可以通过ATTRIB和SET_ATTRIB来获取或设定,但只是用于判断是否为NULL或reset它的
在fn中getAttrib与setAttrib对attributes是有严格限制的
将一个object的attributes复制给另一个object,需(un)set这个"class'之后,才能copy这个object,对S4 bits同样
(9)mode、storage.mode、typeof