y = TRUE
の場合は(rstudioの場合)ビューアで何かを開き、ブラウザにはy = FALSE
のいずれかの関数を考慮してください。 whatever
をoptions(viewer = NULL)
経由でブラウザに開かせることができます(これまでにリセットする必要があります)。しかし、通常のon.exit
アプローチを使用してこの機能を使用することはできません。 windowsとosxでテストされています。rstudioにビューアの代わりにブラウザを使用させる
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
視聴者はほんの一部のHTML(g
)またはウィジェット(f
)のいずれかで機能環境の中で私のオプションを尊重していないように思えます。私は両方とも関数内でviewer = NULL
を使用し、終了時の方法で自分のオプションを返して、結果を表示する場所を制御できるようにすると考えました。
または、これをHTMLとウィジェットの両方で行うより良い方法はありますか?私はDT::datatable
のoptions
引数を無駄にしようとしましたが、これはhtmlTable::htmlTable
の場合には役に立ちません。
私が考えることのできる唯一のアプローチは、すべてのコードを一時ファイルに書き込むことです。if (rstudio) rstudio::viewer(tempfile) else browseURL(tempfile)
と思っているようです。
余分なポイント誰かが私の編集履歴を見て、diffは私はUsheyに「バットシグナル」まで送っ – rawr
2つの異なる方法で同じ文字を削除知っているどのように私に言うことができるかどうか。うまくいけば、彼はシアトルの雲を見ているでしょう。 – hrbrmstr