【问题标题】:R error in eval Functioneval函数中的R错误
【发布时间】: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])。根据您提供的信息,您的餐桌上似乎没有任何民族性。
  • 我有,我只展示了部分栏目。
  • 您对上面建议的方法有任何错误吗?

标签: r function eval


【解决方案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)) }"中的意外'}'
  • 我添加了缺少的括号。如果您不提供可重现的测试示例,就会发生这种情况。你可以自己修正错别字。
  • 对不起,我没看到。
猜你喜欢
  • 2023-03-29
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多