正则表达式无效,原因是R函数中的'{}内容无效'

时间:2019-12-12 06:16:04

标签: r function

我正在使用function

创建宏 mytable包中的

moonBook将在function宏中使用。 mytable功能可快速创建人口描述表。

fun<-function(i,j)
  {
j<-mytable(i~var1+var2+var3,data=rawdata)
return(j)
}
fun(i=criteria,j=out)

但是,错误出现了。

'i'是无效的列名:而是使用'(其他值名称)'

我认为mytable函数无法识别宏对象i

借助这篇文章(object not found in summarise with macro(function) in r),我在i周围加上了双括号。

但是错误再次出现。

 Error in grepl(pattern, x, ignore.case = TRUE) : 
  invalid regular expression, reason 'Invalid contents of {}' 

我尝试了enquo!!。但是错误仍然出现。

 Error in which(grepl(pattern, x, ignore.case = TRUE)) : 
  argument to 'which' is not logical 

请帮助我了解问题所在。

1 个答案:

答案 0 :(得分:0)

基于该函数,可能我们需要一个公式,并且可以使用paste

创建它
fun<-function(i) {

    mytable(as.formula(paste0(i, " ~var1+var2+var3")),data=rawdata)
 }

fun(i= "criteria")

注意:不需要'j'参数,因为我们不需要先创建对象然后return。在R中,不需要显式定义return