2014-09-10 57 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