ID EN
Environment & Scope

sys.parent

R Base 3.6.2 🇮🇩 Bahasa Indonesia

Fungsi-fungsi ini menyediakan akses ke lingkungan ('frame' dalam terminologi S) yang terkait dengan fungsi-fungsi yang lebih tinggi dalam tumpukan panggilan.

Syntax

R
sys.call(which = 0)
sys.frame(which = 0)
sys.nframe()
sys.function(which = 0)
sys.parent(n = 1)<p></p><p>sys.calls()
sys.frames()
sys.parents()
sys.on.exit()
sys.status()
parent.frame(n = 1)</p>

Arguments

Parameter Deskripsi
which the frame number if non-negative, the number of frames to go back if negative.
n the number of generations to go back. (See the ‘Details’ section.)

Return Value

sys.call mengembalikan panggilan, sys.function definisi fungsi, dan sys.frame dan parent.frame mengembalikan lingkungan. Untuk fungsi lainnya, lihat bagian ‘Detail’.

Details

.GlobalEnv diberi nomor 0 dalam daftar frame. Setiap evaluasi fungsi berikutnya meningkatkan tumpukan frame sebesar 1 dan panggilan, definisi fungsi, dan lingkungan untuk evaluasi fungsi tersebut dikembalikan oleh sys.call, sys.function, dan sys.frame dengan indeks yang sesuai. sys.call, sys.frame dan sys.function menerima nilai integer untuk argumen yang mana. Nilai non-negatif berupa nomor frame sedangkan nilai negatif dihitung kembali dari nomor frame evaluasi saat ini. Kerangka induk dari evaluasi fungsi adalah lingkungan di mana fungsi tersebut dipanggil. Nilainya belum tentu lebih kecil satu dari nomor frame evaluasi saat ini, juga bukan lingkungan di mana fungsi tersebut didefinisikan. sys.parent mengembalikan nomor induk f

Contoh

Example
R
# NOT RUN {
require(utils)

## Note: the first two examples will give different results
## if run by example().
ff <- function(x) gg(x)
gg <- function(y) sys.status()
str(ff(1))

gg <- function(y) {
    ggg <- function() {
        cat("current frame is", sys.nframe(), "\n")
        cat("parents are", sys.parents(), "\n")
        print(sys.function(0)) # ggg
        print(sys.function(2)) # gg
    }
    if(y > 0) gg(y-1) else ggg()
}
gg(3)

t1 <- function() {
  aa <- "here"
  t2 <- function() {
    ## in frame 2 here
    cat("current frame is", sys.nframe(), "\n")
    str(sys.calls()) ## list with two components t1() and t2()
    cat("parents are frame numbers", sys.parents(), "\n") ## 0 1
    print(ls(envir = sys.frame(-1))) ## [1] "aa" "t2"
    invisible()
  }
  t2()
}
t1()

test.sys.on.exit <- function() {
  on.exit(print(1))
  ex <- sys.on.exit()
  str(ex)
  cat("exiting...\n")
}
test.sys.on.exit()
## gives 'language print(1)', prints 1 on exit

## An example where the parent is not the next frame up the stack
## since method dispatch uses a frame.
as.double.foo <- function(x)
{
    str(sys.calls())
    print(sys.frames())
    print(sys.parents())
    print(sys.frame(-1)); print(parent.frame())
    x
}
t2 <- function(x) as.double(x)
a <- structure(pi, class = "foo")
t2(a)
# }

See Also

eval for a usage of sys.frame and parent.frame.