Wie andere bereits erwähnt haben, suchen Sie nach exists
. Beachten Sie, dass die Verwendung von exists
mit Namen, die von den Basispaketen von R verwendet werden, würde true zurückgeben, unabhängig davon, ob Sie die Variable definiert haben:
> exists("data")
[1] TRUE
Um dies zu umgehen (wie von Bazz aufgezeigt; siehe ?exists
), verwenden Sie die inherits
Argument:
> exists("data", inherits = FALSE)
[1] FALSE
foo <- TRUE
> exists("foo", inherits = FALSE)
[1] TRUE
Wenn Sie die Namensräume der angehängten Pakete durchsuchen wollten, würde dies natürlich auch nicht funktionieren:
> exists("data.table")
[1] FALSE
require(data.table)
> exists("data.table", inherits = FALSE)
[1] FALSE
> exists("data.table")
[1] TRUE
Das Einzige, was mir einfällt, um dies zu umgehen, ist die Suche in angehängten Paketen, aber nicht in Basispaketen - ist die folgende:
any(sapply(1:(which(search() == "tools:rstudio") - 1L),
function(pp) exists(_object_name_, where = pp, inherits = FALSE)))
Vergleiche Ersetzen _object_name_
mit "data.table"
( TRUE
) gegen. "var"
( FALSE
)
(natürlich, wenn Sie nicht mit RStudio arbeiten, denke ich, dass die erste automatisch angeschlossene Umgebung ist "package:stats"
)