这种方法使用该d_ply
功能在处理之前将动物分开。请注意,可以更改(空格的)默认分隔符。
记录是否需要折叠?例如,如果dog
有两行 for steak
,它们应该以某种方式组合吗?如果是这样,plyr 方法应该能够适应这种情况,只需稍作修改。
ProcessAnimal <- function( d, fileLocation, delimiter=" " ) {
cat(paste0("<", d$Animal[1], ">\n"), file=fileLocation, append=TRUE, sep="")
cat(sapply(seq_len(nrow(ds)), function(i) {
paste0(paste0(ds[i, c("Food", "FoodID")], collapse=delimiter), sep="\n")
}), file=fileLocation, append=TRUE, sep="")
cat(paste0("</", d$Animal[1], ">\n"), file=fileLocation, append=TRUE, sep="")
}
plyr::d_ply(.data=ds, .variables="Animal", .fun=ProcessAnimal, fileLocation="PetFood.txt")
文本文件如下所示:
<cat>
steak 100
beef 200
poo 001
milk 020
steak 100
beef 200
</cat>
<dog>
steak 100
beef 200
poo 001
milk 020
steak 100
beef 200
</dog>