eval函数中的R错误

Posted

技术标签:

【中文标题】eval函数中的R错误【英文标题】:R error in eval Function 【发布时间】:2014-09-10 15:23:42 【问题描述】:

大家好,我正在尝试在 R 中创建一个函数来清理数据...以下代码是其中的一部分。

limpio=function (tabla, campo, campo_conteo)

  tabla1<-aggregate(campo_conteo ~ campo, tabla, length)
  colnames(tabla1)[2]<-"frecuencia"
  tabla2 <- gsub('\\s+','',toupper(tabla1$campo)) 
  View(tabla2) 

所以,当我跑步时:

limpio(vendidos, Nacionality, CustomerID)

我收到以下错误:

eval 中的错误(expr、envir、enclos):找不到对象“CustomerID”

但是列确实存在,所以不知道是什么问题。

colnames(vendidos)

 #[1] "ID"             "CampaignID"     "CustomerID"     "PhoneID"        "Name"          
 #[6] "NumberType"     "Number"         "Birthday"       "Sex"            "Holder"        
#[11] "HolderNumber"   "Nacionality"    "Address"        "City"           "Zip"  

【问题讨论】:

我会尝试 limpo(vendidos, Nacionality, vendidos[,2])。根据您提供的信息,您的餐桌上似乎没有任何民族性。 我有,我只展示了部分栏目。 您对上面建议的方法有任何错误吗? 【参考方案1】:

您不能像这样创建公式对象。您需要将字符传递给函数并从中创建公式:

limpio <- function (tabla, campo, campo_conteo)
  f <- as.formula(paste(campo_conteo, campo, sep="~"))
  tabla1<-aggregate(f, tabla, length)
  colnames(tabla1)[2]<-"frecuencia"
  gsub('\\s+','',toupper(tabla1$campo)) 
  

limpio(vendidos, "Nacionality", "CustomerID")

或者,您可以使用非公式aggregate 方法。

【讨论】:

使用您的代码,我收到以下错误:错误:“gsub('\\s+','',toupper(tabla1$campo)) "中的意外'' 我添加了缺少的括号。如果您不提供可重现的测试示例,就会发生这种情况。你可以自己修正错别字。 对不起,我没看到。

以上是关于eval函数中的R错误的主要内容,如果未能解决你的问题,请参考以下文章

eval()函数的作用是啥?

ESLintPlugin TS 和 JS 混合:parent.eval 中的错误不是函数

被嫌弃的eval和with

nmake - 模拟 eval 函数

用户定义的函数 eval() 函数中出现“找不到对象”错误?

chrome 包应用程序中的 eval