R,Plyr,在具有不同长度输出/ rbind.fill的函数上使用ddply时出错

时间:2013-12-18 16:07:54

标签: r subset plyr

我有一个错误,我不知道如何使用ddply解决以下代码:

FLF.DJ = ddply(dat, c("Trial.group","Location"), function(sub_dat) { 

ST_sow = ST_sowing[ST_sowing$Trial.group %in% unique(sub_dat$Trial.group) &
ST_sowing$Location %in% unique(sub_dat$Location),]   
do.call(rbind, lapply(sub_dat[, "X0142_FLF"], function(x) {
get.DJ(ST_sow[-c(1:3)], as.Date(x, origin="2013-06-01"))}))

})

错误

Error in output[rng, lcols[[i]]] <- matrices[[i]] : 
  incorrect number of subscripts on matrix

使用:

get.DJ = function(df,date){
ST=df[ ,which(as.Date(colnames(df)) == date)]
return(c(ST))
}

如果我只运行function(sub_dat){...}代码的中心部分,它运行良好,但我无法使用ddply部分将函数应用于每个子集("Trial.group","Location"我的数据。

有什么建议吗? 谢谢你的帮助!

编辑: 我认为问题来自于ddply中函数的返回数据帧的长度。 ddply使用rbind.fill来组合所有输出数据,但它们的长度不同并且导致错误。你有什么建议吗 ? 我尝试使用循环而不是rbind,但是出现了同样的错误:

Error in rbind(deparse.level, ...) : 
  invalid list argument: all variables should have the same length')

0 个答案:

没有答案