2014-09-10 70 views
0

大家好我想在R中创建一个函数来清理数据...下面的代码是它的一部分。在eval函数中的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) 

我得到以下错误:

Error in eval(expr, envir, enclos) : object 'CustomerID' not found

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

colnames(vendidos) 

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

我会尝试limpo(vendidos,Nacionality,vendidos [,2])。从你提供的信息来看,你的餐桌上似乎没有任何Nacionality。 – DJJ 2014-09-10 15:37:08

+0

我有它,我只显示了一部分的列。 – GabyLP 2014-09-10 15:41:02

+0

您是否对上述建议的方法有任何错误? – DJJ 2014-09-10 15:44:25

回答

3

您不能像这样创建公式对象。你需要的字符从这些传递给函数和创建公式:

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方法。

+0

随着你的代码,我得到以下错误:错误:'gsub('\\ s +','',toupper(tabla1 $ campo))中的意外'}'}“ – GabyLP 2014-09-10 15:39:21

+0

我已经添加了缺少的括号。如果您没有提供可重复的测试示例,那会发生什么情况。你可以自己修改拼写错误。 – Roland 2014-09-10 15:42:00

+0

对不起,我没有看到它。 – GabyLP 2014-09-10 15:43:57