Force rstudio, um den Browser anstelle des Viewers zu verwenden
Consider entweder Funktion, die (für rstudio) etwas im Viewer öffnen wird, wenny = TRUE
und in Ihrem Browser, wenny = FALSE
. Sie können das @ erzwingwhatever
, um in Ihrem Browser über @ zu öffnoptions(viewer = NULL)
(und dann müssen Sie vorher zurücksetzen), aber ich kann dies nicht innerhalb von Funktionen mit dem normalen @ arbeiton.exit
Ansatz. Getestet unter Windows und OSX.
f <- function(x, y = TRUE) {
if (y) {
oo <- getOption('viewer')
on.exit(options(viewer = oo))
options(viewer = NULL)
} else options(viewer = NULL)
print(getOption('viewer'))
DT::datatable(x)
}
g <- function(x, y = TRUE) {
if (y) {
oo <- getOption('viewer')
on.exit(options(viewer = oo))
options(viewer = NULL)
} else options(viewer = NULL)
print(getOption('viewer'))
htmlTable::htmlTable(x)
}
## in rstudio, returns the viewer function
getOption('viewer')
# function (url, height = NULL)
# ...
## opens in viewer despite `options(viewer = NULL)`
g(mtcars)
# NULL
## again returns the function, ie, reset my options to before g call successfully
getOption('viewer')
# function (url, height = NULL)
# ...
## opens in browser but leaves `options(viewer = NULL)` after exiting
g(mtcars, FALSE)
# NULL
getOption('viewer')
# NULL
Es sieht so aus, als würde der Betrachter meine Optionen in der Funktionsumgebung mit nur ein wenig HTML (@) nicht respektiereg
) oder ein Widget f
). Ich dachte, beide würden @ verwendviewer = NULL
Klicken Sie in die Funktion und geben Sie meine Optionen so zurück, wie sie beim Beenden waren, damit ich steuern kann, wo ich das Ergebnis anzeigen möchte.
Oder gibt es einen besseren Weg, dies für HTML und Widgets zu tun? Ich habe das @ ausprobieoptions
argument inDT::datatable
ohne Erfolg, aber das würde dem @ nicht helfhtmlTable::htmlTable
Fall
Der einzige andere Ansatz, den ich mir vorstellen kann, ist, den gesamten Code in eine temporäre Datei zu schreiben und @ zu verwendeif (rstudio) rstudio::viewer(tempfile) else browseURL(tempfile)
was meiner Meinung nach eine Menge Arbeit für etwas ist, das scheinbar so unkompliziert ist.