如何解决什么时候需要enquo和as_label?
在Tidy Evaluation中,示例显示,为了在分配的LHS上使用变量,我们必须使用as_label()和enquo()。
但是,我发现以下内容似乎可以正常工作:
addSma = function( data,period ) {
colName = paste0("smaCl_",period)
ts2 = data %>%
dplyr::mutate( !!colName := SMA(close,n=period ) )
return( ts2 )
}
我不太了解as_label()和enquo()的功能以及何时真正需要它们。
解决方法
除了支持取消引用(现在支持粘合字符串)之外,:=
的LHS与=
的工作方式相同:它需要符号或字符串。
不需要使用enquo()
,您可以在:=
的LHS上取消对任何字符串的引用。
在函数参数上确实使用enquo()
时,结果可以是任何类型的R对象。它通常是符号或呼叫,但也可以是数字或字符串,例如1
或"foo"
。而且,如果用户致电!!
,那确实可以是任何事情。在这种情况下,如果您需要一个字符串来表示已捕获的该参数,并且可以是任何参数,则可以使用as_label()
。对于任何R对象,它都有很好的定义,并且可以保证返回表示该对象的单个字符串。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。