8
f <- function(x) enquo(x)

e <- f()
#<quosure: empty>
#~

None of these work:

> is_empty(e)
[1] FALSE
> is_missing(e)
[1] FALSE
> is_false(e)
[1] FALSE
> is_quosure(e)
[1] TRUE
4

2 に答える 2

3

クラスの print メソッドを調べると、次のquosureように「空」属性が取得されることが示唆されます。

rlang:::env_type(get_env(e))
# [1] "empty"

残念ながら、env_typeはエクスポートされず、関数env_type呼び出しもありません (最終的には C 関数に向かいますrlang_is_reference) 。

次のように、より直接的に取得できます ( TRUE/ FALSE)。

rlang:::is_reference(get_env(e), empty_env())
# [1] TRUE

の印刷方法quosure:

rlang:::print.quosure
# function (x, ...) 
# {
#     cat(paste0("<quosure: ", env_type(get_env(x)), ">\n"))
#     print(set_attrs(x, NULL))
#     invisible(x)
# }

私はrlang確信を持って述べるには十分に精通していませんが、これはエクスポートされた関数を使用して必要なものを取得する方法のようです:

identical(get_env(e), empty_env())
# [1] TRUE

rlang:::is_referenceを使用していないため、何かが欠けているに違いありませんidentical

于 2017-05-25T17:04:56.537 に答える