我的數據如下:一個R函數包含plyr - ddply():在ddply參數()不能正確地過去
>df2
id calmonth product
1 101 01 apple
2 102 01 apple&nokia&htc
3 103 01 htc
4 104 01 apple&htc
5 104 02 nokia
para=c('apple','htc','nokia')
我想要得到誰的產品有apple&htc,apple&nokia
等ID的數量。 我做一個功能如下:
xandy=function(a,b){ ddply(df2,.(calmonth),summarise, csum=length(grep(paste0('apple','.*','htc'),product)), coproduct=paste0('apple','&','htc') ) }
這個功能給我一個完美的結果如下:
> xandy(para[1],para[3])
calmonth csum coproduct
1 01 2 apple&htc
2 02 0 apple&htc
但不是唯一的apple&htc
,但apple&nokia
等我需要的是,所以我將apple and htc
自己改爲參數,像這樣的新的可能的功能:
xandy=function(a,b){ ddply(df2,.(calmonth),summarise, csum=length(grep(paste0(a,'.*',b),product)), coproduct=paste0(a,'&',b) ) }
查看區別? 我已將'apple','htc'更改爲a,b(參數) 但它根本不是我想要的。
> xandy(para[1],para[3])
錯誤的eval(expr中,ENVIR,enclos):參數丟失,沒有默認值此外:警告消息: 在grep的(paste0(一個,b)中,產品 「*」。 ): 參數「圖案」具有長度> 1且僅第一個元素將被用來
撇開:我不確定這是否是您獲取數據的方式,但是在單個產品列中連接這些Apple&htc等並不是一個好主意。要創建具有相同ID的另一行更好,那麼所有這些聚合和操作都更容易。 –