首页 > 解决方案 > 正则表达式无效,原因是 R 函数中的“{} 内容无效”

问题描述

我正在制作宏function

mytablein moonBookpackage 将在function宏中使用。mytable功能快速制作人口描述表。

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

然而,错误出现了。

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

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

在这篇文章的帮助下(在 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 

请帮我知道是什么问题。

标签: rfunction

解决方案


基于函数,我们可能需要一个公式,它可以用paste

fun<-function(i) {

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

fun(i= "criteria")

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


推荐阅读