Вы можете использовать .Internal(inspect(x))
, чтобы увидеть информацию о том, что находится в x
. Он включает в себя фактический указатель на x
среди множества других вещей. Например, после вашего примера кода я вижу
> .Internal(inspect(df))
@7fa48059fe68 19 VECSXP g0c3 [OBJ,NAM(3),ATT] (len=3, tl=0)
@7fa483d1ba58 14 REALSXP g0c3 [NAM(3)] (len=3, tl=0) 1,2,3
@7fa4805a0ea8 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
@7fa4829d5898 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Joe"
@7fa4829d5828 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "John"
@7fa4829d57b8 09 CHARSXP g0c1 [gp=0x60,ATT] [ASCII] [cached] "Jane"
@7fa4805a0e08 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
@7fa4829d5588 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Brown"
@7fa4829d5518 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Black"
@7fa4829d54a8 09 CHARSXP g0c1 [gp=0x60] [ASCII] [cached] "Boss"
ATTRIB:
@7fa4869050d0 02 LISTSXP g0c0 []
TAG: @7fa47b0c2700 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "names" (has value)
@7fa48059fd78 16 STRSXP g0c3 [NAM(3)] (len=3, tl=0)
@7fa47e05d668 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "id"
@7fa47e3d08a0 09 CHARSXP g1c1 [MARK,gp=0x61] [ASCII] [cached] "fname"
@7fa4829d55f8 09 CHARSXP g0c1 [gp=0x61] [ASCII] [cached] "lname"
TAG: @7fa47b0c2bd0 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "class" (has value)
@7fa47bc3e440 16 STRSXP g1c1 [MARK,NAM(3)] (len=1, tl=0)
@7fa47b1b6308 09 CHARSXP g1c2 [MARK,gp=0x61,ATT] [ASCII] [cached] "data.frame"
TAG: @7fa47b0c24d0 01 SYMSXP g1c0 [MARK,NAM(3),LCK,gp=0x4000] "row.names" (has value)
@7fa483ba7f78 13 INTSXP g0c1 [NAM(3)] (len=2, tl=0) -2147483648,-3
поэтому указатель на df
равен @7fa48059fe68
. Если вам нужен только указатель, вы можете извлечь его:
getPointer <- function(x) {
lines <- capture.output(.Internal(inspect(x)))
sub(" .*", "", lines[1])
}
, а затем
> getPointer(df)
[1] "@7fa48059fe68"
Имейте в виду, что функция getPointer
может изменить свой аргумент, поскольку она смотрит на вещи, которые вы не должны видеть.